![](https://img-blog.csdnimg.cn/img_convert/9e87452b16843ee03707fcf34c0807e8.png)
思路
一、构建单向循环表
在头文件中构建一个结构体并取别名为(link_t),该结构体定义了链表的数据域和指针域
构建函数体初始化(link_init),在堆中开辟空间,同时给头节点的next赋值为p
构建函数体尾插(link_add_tail),实现对链表的数据存入
构建函数体遍历(display),实现对链表的打印
将以上函数在头文件中进行声明
二、作业分析
将第一个有效数据赋值给p,数n出局也可以理解为数到n-1的下一个出局。故可以对p进行操作,将p的next赋给node,然后孤立node,再将其释放,然后p进行下一次循环,直到p的next等于自己,结束循环。
构建函数体数n出局(link_n_out)
![](https://img-blog.csdnimg.cn/img_convert/a5e27d0eb5e68e3dc292b77f4a976866.jpeg)
三、相关代码
结构体(struct link)却别名为(link_t)
![](https://img-blog.csdnimg.cn/img_convert/0e6f18e8d456064e3a35ab2adacbad93.png)
初始化(link_init)
![](https://img-blog.csdnimg.cn/img_convert/9a67e6b2cae993521c157d57422e12f3.png)
尾插(link_add_tail)
![](https://img-blog.csdnimg.cn/img_convert/a585ff83c4e995d0108538d3cc825e75.png)
遍历(display)
![](https://img-blog.csdnimg.cn/img_convert/1f534058c0a2cf3ee861ac8b67732c5e.png)
数n出局(link_n_out)
![](https://img-blog.csdnimg.cn/img_convert/52b808b65411165b2bad06d5df2e5e30.png)
四、运行结果
![](https://img-blog.csdnimg.cn/img_convert/0c8c1de83b1a8ee9fd225b5649a852a4.png)