约瑟夫问题

在这里插入图片描述
题如图所示,大家也看到了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的指针都是空了,所以呢,头尾指针得向下一个位置移
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值