题如图所示,大家也看到了4.5 单向循环链表,对,这个题就是用单向循环链表做的,41个人围成一个圈,就是一个单项循环链表。分析一下
- 读题我们可以得到几个信息,每隔两人第三个人 ,就死了,依次循环,死了的人不计或者说跳过开始数,到最后活了下来意思就是程序测试结果最后两位就是16和31。看下图
不同颜色的斜杆表示每次循环数3所死去的人,这里题目是41个人所以我们得先设置一个游标,这个游标表示的是数人数时的下标,单项循环链表删除元素的特点就是找到删除元素的上个结点,如果游标是p,那么p.next就是要删除的元素,
p.next=del.next把删除元素的下一跳给p的下一跳作为下个删除,del.next=nul,ldel=null;把它置空 就删除掉了 size–;有效元素–,p=p.next;p在当前轮后移 接着循环 再移一次
大体思路有了,那么还得注意几个细节问题,循环链表,如果你删除得元素是头或者尾,head和rear的指针都是空了,所以呢,头尾指针得向下一个位置移