天天看点

循环链表

单向循环链表:

空表:l->next = l。

与单链表的联系:判断表尾的方法不同:单链表用p==null;循环链表用p==l。

双向循环链表:一个结点包含指向后继(next) 和指向前驱(prior) 两个指针,两个方向又分别构成循环链表。

双向循环链表的插入和删除:

1.p之后插入s

s->next = p->next;

p->next = s;

s->prior = p;

s->next->prior = s;

2.p之前插入s

s->prior= p->prior;

p->prior = s;

s->next = p;

s->prior->next = s;

3.删除p之后继s

s = p->next;

p->next = s->next;

p->next->prior = p;

4.删除p

p->prior->next= p->next;

p->next->prior= p->prior;

一道题目:循环链表解决josephus环问题

题目:n个人围成一圈,从第一个开始顺序报数1,2,3,凡是报到3 者退出圈子,最后剩下的就是胜利者。

参考代码:

循环链表
循环链表

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2622359.html

继续阅读