文章来源:http://blog.seclibs.com/数据结构之循环链表-c语言实现/
之前在链表那一节说了单链表、双向链表和循环链表,前面已经把单链表和双向链表用代码实现过了,当时没有实现循环链表是在实现的过程中有一点没有想明白,今天在实现栈的时候突然相通了,就把这两条给补上。
循环链表有两种实现方式,循环单链表和循环双向链表
因为在前面的实现过程中,我的考虑不是很全面,导致后面在它们的基础上进行修改的时候出现了很多问题,在循环链表的实现当中,我在几乎每一个函数前面都加了一条语句 struct link* x = list; 为了将链表头结点的内存地址给保留下来,在前面的实现当中,为了保证插入数据的时候在末尾插入,我将list的值进行了移动,导致现在需要头结点的内存地址时没有任何的保留了。
如果需要下载代码请移步至文末
循环单链表
![6b700408e86659f7d9d84e4f7407b4f7.png](https://i-blog.csdnimg.cn/blog_migrate/c9e8b1c651209f0dce6416fe258810b2.png)
![296db44f2f722715a07adb19c565e7fa.png](https://i-blog.csdnimg.cn/blog_migrate/48bcf92ab66380353f77e874aa383721.jpeg)
循环双向链表
![744675fc347b2c5b5c2b929b8183aa21.png](https://i-blog.csdnimg.cn/blog_migrate/4c80c57b812a2dcf606481a018d1dc58.jpeg)
![8cc97ea5913016107a944a3d08b59b34.png](https://i-blog.csdnimg.cn/blog_migrate/f1aa71e23f2f1165f219e20bf5e71df7.jpeg)
代码:
循环单链表:[GitHub]
循环双向链表:[GitHub]
文章首发公众号和个人博客:
公众号:无心的梦呓(wuxinmengyi)
![d5755d96f58f7ddc934d978b744001a0.png](https://i-blog.csdnimg.cn/blog_migrate/d9f4624381df40b0d60d07fab60296f6.jpeg)
个人博客:Vesel『无心』'Blog