![807962344ac8d7f12a1477ce923316bb.png](https://i-blog.csdnimg.cn/blog_migrate/be85df0249fe6b68a7c775a020249279.png)
循环链表是一种链式存储结构,它的最后一个结点指向头结点,形成一个环。因此,从循环链表中的任何一个结点出发都能找到任何其他结点。
关键点: 最后一个节点指向头节点,即头结点->指向首元结点。
![3ed5d1692fbda872aee87fdb644bebc1.png](https://i-blog.csdnimg.cn/blog_migrate/b365393a40ec7d379012e15d5ee7dc8d.png)
![9965239e0059ce24d1288b5e56dfaac9.png](https://i-blog.csdnimg.cn/blog_migrate/cf63b1e24890da121fd447a1e2169bcc.png)
![30037bc946c0cf0f52f907030b3a26a5.png](https://i-blog.csdnimg.cn/blog_migrate/4567d9465b018bb8ae8abfd2d9a8a4bb.png)
0.0.准备工作
#define ERROR 0
0.1.定义节点
//定义结点
1.链表的创建
步骤:1.创建一个节点
![2ba557d1ff0ab29bd78e2cdeb1066e36.png](https://i-blog.csdnimg.cn/blog_migrate/7e36796fb791c0a7f5adf78f2448f400.png)
2.把新创建节点的next指向头
![a723d3647488378bde70c2943c35bdc0.png](https://i-blog.csdnimg.cn/blog_migrate/03368899bf9fb9b13ca2bf80d5da2bde.png)
3.把前头结点的next指向新创建的节点‘
![d27b9a79570db8043604acea115abb5f.png](https://i-blog.csdnimg.cn/blog_migrate/4784a6c20997184c5f4edcf191b2a5f9.png)
4.添加多个节点,道理类似
![709e691d5d70d6ba060ef26200010530.png](https://i-blog.csdnimg.cn/blog_migrate/5cc574d61e2f525b9b27e69be94237c7.png)
/*
2.链表的插入
分为两种情况
1.插在首元结点
要是插在首位,就要遍历找到尾节点.
a.创建新的节点
![4969e767fcbdd23391cf324ae9103415.png](https://i-blog.csdnimg.cn/blog_migrate/54ce4f5978a8e90eec120296c8ec9fc7.png)
b.新创建节点的next指向头节点
![6b8c10824fb7a7ac8efc65863bcb8e15.png](https://i-blog.csdnimg.cn/blog_migrate/52ba3fa59fc273183578bde8f9c57762.png)
c.把尾节点的next指向head
![1bfef9600d55abb064b7ad9db6825da2.png](https://i-blog.csdnimg.cn/blog_migrate/c39cbb558822cc59a7c3e509de357d81.png)
d.修改head的指向
![f550f2ee50274bca55cf9481b80f31ce.png](https://i-blog.csdnimg.cn/blog_migrate/3e6f63820c95d6c2d7ba22de493f8df8.png)
2.插在其他地方
a.找到要插入位置的前一个节点(target),并创建一个新节点
![3a3c6faeac3a7d6547322131e19cef88.png](https://i-blog.csdnimg.cn/blog_migrate/75be8e5c0a70c3388e22fc19183fc86c.png)
b.把新创建节点的next指向targe的next
![da77a6f37c59bcff66f4a7d5d353e3c3.png](https://i-blog.csdnimg.cn/blog_migrate/fbc62a949bb568f6cc5652daacfe9ad1.png)
c.修改target的next指向新创建的节点
![cfdf254079f9c67d46af3b55b85a4ddb.png](https://i-blog.csdnimg.cn/blog_migrate/0a9e38a304f6acd7f520daf2193344cb.png)
//循环链表插入数据
3.循环链表删除元素
//循环链表删除元素
4.遍历链表和查找链表
// 遍历循环链表,循环链表的遍历最好用do while语句,因为头节点就有值