知识大全 单链表的查找运算
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相关参考
()按值查找 单链表的按值查找是在线性表存在的情况下查找值为x的数据元素若成功返回首次出现的值为x的那个元素所在结点的指针;否则未找到值为x的数据元素返回NULL表示查找失败 算法思路从链表的
查找操作 ()按序号查找 从单链表的第一个元素结点起判断当前结点是否是第i个若是则返回该结点的指针否则继续下一个结点的查找直到表结束为止若没有第i个结点则返回空如果i=返回头指针 算法如下
单链表的运算建立单链表 假设线性表中结点的数据类型是字符我们逐个输入这些字符型的结点并以换行符\\n为输入条件结束标志符动态地建立单链表的常用方法有如下两种()头插法建表①算法思路 从一个空表开始
插入运算()思想方法 插入运算是将值为x的新结点插入到表的第i个结点的位置上即插入到ai与ai之间具体步骤 ()找到ai存储位置
单链表的运算 建立单链表 假设线性表中结点的数据类型是字符我们逐个输入这些字符型的结点并以换行符\\n为输入条件结束标志符动态地建立单链表 的常用方法有如下两种 ()头插法建表 ①算法思
()尾插法建带头结点的单链表 ①头结点及作用 头结点是在链表的开始结点之前附加一个结点它具有两个优点: ⒈由于开始结点的位置被存放在头结点的指针域中所以在链表的第一个位置上的操作就和在表的其
插入运算 ()思想方法 插入运算是将值为x的新结点插入到表的第i个结点的位置上即插入到ai与ai之间 具体步骤 ()找到ai存储位置p ()生成一个数据域为x的新结点*s ()令结点*
()尾插法建表 ①算法思路 从一个空表开始重复读入数据生成新结点将读入数据存放在新结点的数据域中然后将新结点插入到当前链表的表尾上直到读入结束标志为止 > 具体方法【参见动画演示】 注意
图双向链表中的结点删除 双向链表的结束条件和单链表相同双向循环链表的结束条件和单向循环链表的结束条件相同 静态链表 根据上节单链表的知识用单链表表示线性表时其结点空间是在运行时根据需要动态分
销毁单链表 单链表被构造使用完后由于其结点均为动态分配的内存空间所以必须要销毁以释放空间否则会造成申请的内存不能释放单链表的销毁操作是创建操作的逆运算由于要修改单链表的头指针的指针变量所以要将头