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

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

单链表的查找

  • 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月前
|
人工智能
数组排序,查找
数组排序,查找
|
4月前
|
算法 C语言
【408数据结构与算法】—顺序表的插入、删除和查找(四)
【408数据结构与算法】—顺序表的插入、删除和查找(四)
|
8月前
|
存储 C++
链表操作:插入、删除与遍历
(笔者画图不易呜呜)链表是一种基本的数据结构,它可以用来存储一系列的元素,并且支持灵活的插入、删除操作。在计算机科学中,链表常常用于构建更复杂的数据结构,如栈、队列以及图等。
191 0
|
8月前
|
存储 算法
数组算法:倒置,查找,插入,删除
数组算法:倒置,查找,插入,删除
68 0
顺序表头插头删尾插尾删以及任意位置的插入删除和顺序表中的查找
顺序表头插头删尾插尾删以及任意位置的插入删除和顺序表中的查找
|
9月前
链表学习(链表的创建,插入,删除,查找,遍历)
链表学习(链表的创建,插入,删除,查找,遍历)
85 0
|
存储 C语言 C++
顺序表的插入、删除和查找(四)
详细介绍了数据结构中的顺序表
219 0
二叉查找树的建立,删除,非递归和递归查找给定元素,非递归和递归查找最大元素结点和最小元素结点
二叉查找树的建立,删除,非递归和递归查找给定元素,非递归和递归查找最大元素结点和最小元素结点