加入收藏 | 设为首页 | 会员中心 | 我要投稿 青岛站长网 (https://www.0532zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

详细图文教你花样玩链表

发布时间:2021-04-19 01:24:56 所属栏目:动态 来源:互联网
导读:面在文章【数据结构之链表】看完这篇文章我终于搞懂链表了中已经介绍了链式存储结构,介绍了链式存储结构的最基本(简单)实现单向链表。 单向链表,顾名思义,它是单向的。 因为单链表的每个结点只有一个数据域和一个指针域,而该指针域只存储了下一个结点的

面在文章【数据结构之链表】看完这篇文章我终于搞懂链表了中已经介绍了链式存储结构,介绍了链式存储结构的最基本(简单)实现——单向链表。

单向链表,顾名思义,它是单向的。

因为单链表的每个结点只有一个数据域和一个指针域,而该指针域只存储了下一个结点的地址,所以我们只能通过某结点找到其直接后继结点,却不能通过某节点找到其直接前驱结点。

此外,由于单链表到尾结点(链表的最后一个结点)结束,所以尾结点的指针域是 NULL,以此来表示链表的终止,这就导致我们遍历到尾结点的时候,如果想再次遍历,只能手动回到头结点再开始遍历。

为了弥补单链表的上面两个缺点,下面介绍两种链表,它们都是单链表的变形,如果你理解了单链表,那么会很容易理解这两种变形。向循环链表是由单链表进化而来的,算是单链表的“儿子”,所以单链表的那一套结构对于单向循环链表来说完全适用,从上图你也可以看出,结构并无较大改变,二者所不同只在尾结点,所以我们只需要在尾结点和与尾结点相关的操作上下功夫就行了。

因此,单向循环链表的结构体和单链表的结构体相同。除的本质是“跳过”待删除的结点,所以我们要找到待删除结点的直接前驱结点,然后让其直接前驱结点的 next 指针指向其直接后继结点,以此来“跳过”待删除结点,最后保存其数据域,释放结点,即完成删除。

这里只演示头删法。

因为删除的是头结点的直接后继结点,所以我们不必再费力寻找待删除结点的直接前驱结点了。

(编辑:青岛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!