😀前言
单链表是一种常见的数据结构,它由一系列结点组成,每个结点包含数据元素和指向下一个结点的指针。在本篇文章中,我们将讨论单链表的基本操作,包括初始化、销毁、清空、求表长、按值查找、插入和删除等操作。这些操作是使用单链表时常常需要用到的基本操作,对于理解和应用单链表具有重要意义。
🏠个人主页:尘觉主页
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊
文章目录
- 数据结构(九)——单链表的基本操作
- 单链表的初始化
- 销毁单链表
- 清空单链表
- 求表长
- 总结:常用操作
- [算法步骤]
- 单链表的按值查找——根据特定数据获取该数据所在地址
- 算法步骤
- [算法分析]
- 单链表的插入
- 思考一下
- 删除第i个结点
- [算法步骤]
- 😄总结
数据结构(九)——单链表的基本操作
单链表的初始化
① 新生成的新结点作为头结点,用头指针L指向头结点
② 头结点的指针域置空
销毁单链表
清空单链表
链表仍然存在将其置空(头结点和头指针仍然存在)
求表长
从首元结点开始依次计数直至最后一个元素
总结:常用操作
指向头结点 p=L;
指向首元结点p=L->next;i=1;
指向下一结点p=p->next;
[算法步骤]
①用指针p指向首元结点,用j做计数器初值赋为1。
②从首元结点开始依次顺着链域next向下访问,只要指向当前结点的指针p不为空(NULL), 并且没有到达序号为i的结点,则循环执行以下操作:
• p指向下一个结点;• 计数器j相应加1。
③退出循环时,如果指针p为空,或者计数器j>i,说明指定的序号i值不合法大于表长n或小于1), 取值失败返回ERROR;否则取值成功,
此时j=i时,p所指的结点就是要找的第l个结点,用参数e保存当前结点的数据域,返回OK。
单链表的按值查找——根据特定数据获取该数据所在地址
算法步骤
-
从第1个节点依次与e比较
-
如果找到一个与e值相等的数据,则返回在列表中的地址
-
如果查遍整个链表都没有找到和一直相等的元素停止循环返回0/NULL
[算法分析]
该算法的执行时间与待查找的值e相关, 其平均时间复杂度分析类似于算法2.7,也为O(n)。
单链表的插入
思考一下
①②步骤能互换吗?
答案是不能:直接换顺序执行②找不到继ai结点了,需要先用p指向ai-1结点再用用q指针指向ai结点
删除第i个结点
[算法步骤]
-
找到第i-1个结点,如果有必要的话保存ai的值且将地址存于在q中以备释放
-
找到ai+1!的位置赋值给,ai-1的next域
-
释放ai
p − > n e x t = p − > n e x t − > n e x t ; p->next = p->next->next; p−>next=p−>next−>next;
😄总结
单链表的基本操作是在使用单链表时必须掌握的知识点。初始化操作用于创建一个空链表,并将头指针指向头结点;销毁操作用于释放链表占用的内存空间;清空操作将链表中的所有结点清空,但保留头结点和头指针;求表长操作用于计算链表中结点的个数;按值查找操作用于根据特定的数据查找该数据在链表中的位置;插入操作用于向链表中插入新的结点;删除操作用于删除链表中的指定结点。
通过掌握这些基本操作,我们可以方便地对单链表进行操作和管理,实现各种功能和应用。同时,这些操作也是理解和学习其他高级链表结构和算法的基础。因此,深入理解和熟练掌握单链表的基本操作对于学习和应用数据结构非常重要。希望本文能够对读者在学习和使用单链表时提供一些帮助和指导。
😁热门专栏推荐
想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集
linux合集
手写机制
微服务组件
spring_尘觉
springMVC
mybits
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
🤔欢迎大家加入我的社区 尘觉社区
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞