线性链表2(环形链表和双向链表,还有躲在角落瑟瑟发抖的双向环形链表)

环形链表

按照上一篇博客的方式用head头结点的话,那构建环形链表的方式就是
1.去掉头节点,
2.将最后一个结点的指针域(原来是NULL)改成指向第一个结点
这时作为函数头节点的就是原本最后的一个结点。(因为这样保证了头节点的下一个就是第一个结点)
在这里插入图片描述
就长这样。
和正常的单链表有所不同,首先是判空的条件,原来的为head->next 为NULL,而现在就是head为NULL
其次在循环的时候就不应该以NULL为结束的标志了。
最后,在插入和删除的时候,和之前稍有不同,建议画图体会一下。

也可以不删除头节点,将其依旧留在原来的链表中,被最后一个结点连上,这样的话判空就是head->next为head;

好处呢,就是可以直接从任意一个结点出发遍历所有的结点,比较方便。

双向链表

也是一种为了方便操作的形式,单链表是一个结点指向后面的元素,这玩意是前后都可以指向。
在这里插入图片描述
就是这样的,同样给他按一个表头结点吧,比较舒服。
这时,判空、插入删除、遍历的方式都可能有所不同。
友情提示,双向链表的插入删除操作因为修改指针比较多,做题经常看到,注意不要断链了就行。(答案不唯一)

双向环形链表

相信这个就不用说了吧,就是上面两个的结合,操作就更麻烦了。(个人感觉平时涉及不多,了解一下就行了吧)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值