循环链表与约瑟夫问题

循环链表定义

  • 定义:循环链表的定义十分简单,只需使一条单链表的尾部结点指向头结点,即可完成循环链表

循环链表的构建

class Node:def __init__(self, item):self.item = itemself.next = Nonefirst = Node('aa')
second = Node('bb')
third = Node('cc')
forth = Node('dd')
fifth = Node('ee')first.next = second
second.next = third
third.next = forth
forth.next = fifth
# Create a circle list
fifth.next = first

将单链表的尾部结点的指针指向头结点即可

约瑟夫问题

  • 背景简介:传说有这样一个故事,在罗马人占领乔塔帕特后, 39个犹太人与约瑟夫及他的朋友躲到-个洞中, 39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式, 41个人排成-个圆圈,第一个人从1开始报数, |依次往后,如果有人报数到3 ,那么这个人就必须自杀,然后再由他的下一个人重新从1开始报数,直到所有人都自杀身亡为止。然而约瑟夫和他的朋友并不想遵从。于是,约瑟夫要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,从而逃过了这场死亡游戏。


Python代码实现

class Node:def __init__(self, item):self.item = itemself.next = Nonedef circle_list():head = Nonefor i in range(1, 42):if i == 1:first = Node(i)head = firstcontinue# i != 1first.next = Node(i)first = first.nextif i == 41:first.next = head# Iterate the linked list circlecur = headcount = 1while cur != cur.next:count += 1prev = curcur = cur.next# print(f"count:{count}")if count == 3:print(cur.item)prev.next = cur.nextcur = cur.nextcount = 1print(cur.item)circle_list()

输出:

3,6,9,12,15,18,21,24,27,30,33,36,39,1,5,10,14,19,23,28,32,37,41,7,13,20,26,34,40,8,17,29,38,11,25,2,22,4,35,16,31

最后两个数为16和31,两人成功逃过了这场死亡游戏

数据结构链表之循环链表——4相关推荐

  1. 可由一个尾指针唯一确定的链表有_L2数据结构第08课 单向链表和循环链表

    L2-数据结构-第08课 单向链表和循环链表 线性表 线性表是一种常用的数据结构,其中的每一个元素(结点)都有唯一的前驱和唯一的后续.当然,第一个元素只有后续,最后一个元素只有前驱. 线性表一般分为& ...

  2. 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表

    ​ 线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...

  3. 数据结构 - 链表 - 面试中常见的链表算法题

    数据结构 - 链表 - 面试中常见的链表算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图. ...

  4. 第十章 基本数据结构——链表

     链表 链表与数组的区别是链表中的元素顺序是有各对象中的指针决定的,相邻元素之间在物理内存上不一定相邻.采用链表可以灵活地表示动态集合.链表有单链表和双链表及循环链表.书中着重介绍了双链表的概念及操作 ...

  5. 基于QT实现的可视化链表(单链表、循环链表、双向链表)

    1.1 题目 题号1:分别以单链表.循环链表.双向链表为例,实现线性表的建立.插入.删除.查找等基本操作. 要求:能够把建立.插入.删除等基本操作的过程随时显示输出来. 1.2 软件功能 功能分为三个 ...

  6. C语言之链表:单向链表,循环链表,双向链表

    C语言之链表:单向链表,循环链表,双向链表 提起链式存储结构,其与数组是两个非常基础的数据结构,每当提到链式存储结构时,一般情况下我们都会将其与数组放到一块儿来比较. 对于数组与链表,从结构上来看,数 ...

  7. 数据结构之单向循环链表

    单向循环链表与单向链表的结点结构相同,每个结点都有一个数据域.一个指针域. 数据域用来存储结点的数据,指针域用来存储下一个结点所在的内存空间地址. 两者不同的是,单向链表末结点的指针域为NULL,而单 ...

  8. 数据结构链表详解(c语言实现)

    链表(C语言) 绪论 单链表的实现 单链表的定义 单链表的初始化 单链表的插入删除 单链表的删除 单链表的查找 单链表的修改 单链表的建立 双向链表 循环链表 链表与顺序表的区别 总结 绪论 线性表是 ...

  9. java数据结构-链表详解

    文章目录 1.数据结构-链表详解 1.1单链表 1.1.1单链表节点的尾部添加 1.1.2单链表节点的自动排序添加 1.1.3单链表节点的修改 1.1.4单链表节点的删除 1.2单链表面试题 1.2. ...

最新文章

  1. python压缩包怎么安装-Python学习笔记-打包发布Python模块或程序,安装包
  2. 普通平键的主要尺寸有_工字钢尺寸大全
  3. java esp_在我的ESP游戏方法中非法开始表达
  4. 删除表空间联带数据文件
  5. LiveVideoStack线上分享第五季(十三):高性能视频硬件编码
  6. MFC C++ Cstring与string互转
  7. 计算机系统结构怎么提高代码效率,北邮 计算机系统结构 实验报告(全部)指令流水线相关性分析 DLX 处理器程序设计 代码优化.doc...
  8. ASP.NET Core 优雅的在开发环境保存机密(User Secrets)
  9. 《Python Cookbook 3rd》笔记(2.18):字符串令牌解析
  10. pytorch数据加载时报错OSError: [Errno 22] Invalid argument
  11. Brave 浏览器宣布集成 IPFS 协议,它会取代 HTTP 吗?
  12. 苹果Mac数据库管理开发工具:JetBrains DataGrip
  13. 第四章 爬取西刺免费代理ip 并应用到scrapy
  14. 微信小程序开发-轮播图的实现
  15. 弘玑Cyclone发布全线产品 | 多个产品与功能系行业首创
  16. 29岁华为员工工资曝光,揭露残酷真相:职场下半场,拼的就是这项能力!
  17. Windows Mobile 6.x 下改Tahoma字体+微软雅黑说明
  18. python批量修改及创建txt
  19. mosquitto出现由于目标计算机积极拒绝,无法连接
  20. 详解优化iOS程序性能的25个方法

热门文章

  1. 单机单网卡最大tcp长连接数真的是65535吗?
  2. 网络爬虫--16.BeautifulSoup4
  3. mysql数据库访问编程,mysql 连接数据库
  4. pmp思维导图 第六版_PMP考试技巧攻略(上)
  5. .net core linux 编译,.NET Core 源码编译的问题解析
  6. jQuery中的on 和事件委派
  7. JS_11正则表达式和字符串方法
  8. java jml_JML 入门
  9. php swoole websocket vue 实现聊天室案例
  10. Ajax-基础篇(持续更新01)