单链表的按位查找和按值查找

简介: 单链表的按位查找和按值查找的代码实现讲解

单链表的查找

  • 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;
}

总结

通过链表的插入,删除,查找的了解,我们可以发现代码的频繁。在插入和删除中我们每次都用到了查找这个功能,所以我们考虑可以将查找这段代码进行封装,从而达到代码的复用性。

目录
相关文章
|
9月前
|
机器学习/深度学习
数据结构实验之查找四:二分查找
数据结构实验之查找四:二分查找
|
4月前
|
Java 索引
|
4月前
数组元素同时查找插入
数组元素同时查找插入
31 0
|
9月前
|
机器学习/深度学习
数据结构实验之查找一:二叉排序树
数据结构实验之查找一:二叉排序树
|
9月前
|
人工智能
数组排序,查找
数组排序,查找
|
存储 算法
查找-之有序表查找
待查找的表是有序排列的
112 0
查找-之有序表查找
|
搜索推荐
查找-之二叉排序树(查找、插入、删除)
有序的线性表采用:折半/二分、插值、斐波那契查找相比顺序查找效率得到提高,但是在插入和删除时效率低(为维持数据的有序性) 在高效实现查找操作时,如何提高插入和删除的效率? 在一些应用场景:在查找时需要插入和删除
187 0
查找-之二叉排序树(查找、插入、删除)
|
存储 人工智能 算法
查找-之顺序表查找-(数据的排列无序)
静态查找表:只做查找操作的查找表 动态查找表:在查找过程中还做插入和删除数据元素的操作
124 0
查找-之顺序表查找-(数据的排列无序)