单链表的查找
- GetElem(L,i):按位查找,获取表L中第i个位置的元素的值
- LocateElem(L,e):按值查找,在表L中查找具有给定关键字值的元素
网络异常,图片无法展示
|
按位查找
分析:按位查找一般考虑的是带头结点的。所以可以把带头结点当作是0结点,首先判断i是否小于0,先定义一个j是当前指向的是第几个结点,即最开始是指向第0个结点。然后通过循环可以找到第i个结点
LNOde * GetElem(LinkList L,int i){ if(i<0) return false; LNode *p; int j=0; p=L; while(P!=Null && j<i){ p=p->next; j++; } return p; }
按值查找
按值查找,找到数据==e的结点
LNOde * GetElem(LinkList L,ELemType e){ LNode *p=L->next; while(P!=Null && p->data != e) p=p->next; return p; }
求表的长度
分析:想要求一个单链表的长度,可以通过头指针p一直指向它的下一个结点,并且记录指向下一个结点的次数,当下一个结点为Null的时候结束循环,这时候累加次数即单链表的长度
int Length(LinkList L){ int len = 0; //统计表长 while(p->next != Null){ p = p->next; len++; } retrun len; }
总结
通过链表的插入,删除,查找的了解,我们可以发现代码的频繁。在插入和删除中我们每次都用到了查找这个功能,所以我们考虑可以将查找这段代码进行封装,从而达到代码的复用性。