课程链接
    按位查找

    1. // 按位查找,返回第i个元素
    2. LNode * GetElem(LinkList L, int i)
    3. {
    4. if (i<0)
    5. return NULL;
    6. LNode *p; //指针p当前扫描到的结点
    7. p=L; //L指向头结点,头结点是第0个结点(不存数据)
    8. int j = 0; //指针p指向的是第几个结点
    9. while(p!= NULL && j<i)
    10. {
    11. p=p->next;
    12. j++
    13. }
    14. return p;
    15. }

    按值查找

    1. LNode * LocateElem(LinkList L, int e)
    2. {
    3. LNode *p=L->next;
    4. while(p!=NULL && p->data !=e) //p不不等于NULL并且p不等于e时才行
    5. p = p->next;
    6. return p;
    7. }

    求表的长度

    1. int Length(LinkList L)
    2. {
    3. int len = 0; //表长
    4. LNode *p = L;
    5. while (p->next!=NULL)
    6. {
    7. p=p->next;
    8. len++;
    9. }
    10. return len;
    11. }

    总结:
    按位查找,按值查找还有求单链表长度的核心代码差不多。
    三种基本操作的时间复杂度都是O(n)
    最重要的是如何写循环扫描各个节点的代码逻辑
    还要注意边界条件的处理