1.1 循环链表
1.1.1什么是循环链表
- 概念上
- 任意数据元素都有一个前驱和一个后继
- 所有的数据元素的故向你构成一个逻辑上的环
- 实现上
- 循环链表是一种特殊的单链表
- 尾节点的指针域保存了首节点的地址
1.1.2 循环链表的继承层次
1.1.3 循环链表的实现思路
- 通过模板定义Circle类, 继承自LinkList类
- 定义内部函数 last_to_first(),用于将单链表首尾相连
- 特殊处理: 首元素的插入和删除操作
- 重新实现: 清空操作和遍历操作
1.1.4 循环链表的实现要点
- 插入位置为0 时:
- 头结点和尾节点均指向新节点
- 新节点成为首节点插入链表
- 删除位置为0 时
- 头结点和尾节点指向位置为1的节点
- 安全小号首节点
1.2 实现
1.2.1
1.2.2
1.2.3
1.3循环链表的使用
1.3.1 约瑟夫环
void joseplus(int n, int s, int m)
{
CircleList<int> c1;
for(int i = 1; i <= 41; i++)
{
c1.insert(i);
}
c1.move(s - 1, m - 1);
while(c1.length() > 0)
{
c1.next();
cout << c1.current() << endl;
c1.remove(c1.find(c1.current()));
}
}
int main()
{
joseplus(41,1,3);
return 0;
}
1.3.2
1.3.3
1.4
1.4.1
1.4.2
1.4.3
1.5
1.5.1
1.5.2
1.5.3S
1.6
1.6.1
1.6.2
1.6.3
参考一 : 狄泰软件课程
如有侵权:请联系邮箱 1986005934@qq.com