知识大全 单链表的查找运算
Posted 结点
篇首语:知识是珍贵的宝石,文化的宝石放出的光辉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 单链表的查找运算相关的知识,希望对你有一定的参考价值。
单链表的查找运算
( )按序号查找① 链表不是随机存取结构 在链表中 即使知道被访问结点的序号i 也不能像顺序表中那样直接按序号i访问结点 而只能从链表的头指针出发 顺链域next逐个结点往下搜索 直至搜索到第i个结点为止 因此 链表不是随机存取结构
② 查找的思想方法 计数器j置为 后 扫描指针p指针从链表的头结点开始顺着链扫描 当p扫描下一个结点时 计数器j相应地加 当j=i时 指针p所指的结点就是要找的第i个结点 而当p指针指为null且j≠i时 则表示找不到第i个结点 注意 头结点可看做是第 个结点
③具体算法实现 ListNode* GetNode(LinkList head int i) //在带头结点的单链表head中查找第i个结点 若找到( ≤i≤n) //则返回该结点的存储位置 否则返回NULL int j; ListNode *p; p=head;j= ;//从头结点开始扫描 while(p >next&&j<i)//顺指针向后扫描 直到p >next为NULL或i=j为止 p=p >next; j++; if(i==j) return p;//找到了第i个结点 else return NULL;//当i< 或i> 时 找不到第i个结点
④算法分析 算法中 while语句的终止条件是搜索到表尾或者满足j≥i 其频度最多为i 它和被寻找的位置有关 在等概率假设下 平均时间复杂度为
( ) 按值查找①思想方法 从开始结点出发 顺着链逐个将结点的值和给定值key作比较 若有结点的值与key相等 则返回首次找到的其值为key的结点的存储位置 否则返回NULL
②具体算法实现 ListNode* LocateNode (LinkList head DataType key) //在带头结点的单链表head中查找其值为key的结点 ListNode *p=head >next;//从开始结点比较 表非空 p初始值指向开始结点 while(p&&p >data!=key)//直到p为NULL或p >data为key为止 p=p >next;//扫描下一结点 return p;//若p=NULL 则查找失败 否则p指向值为key的结点
cha138/Article/program/sjjg/201311/23269相关参考