| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构与算法——单向环形链表(约瑟夫问题) -> 正文阅读 |
|
[数据结构与算法]数据结构与算法——单向环形链表(约瑟夫问题) |
约瑟夫环:假如环中有n个元素,从编号为k(1<=k<=n)的元素开始从1编号,数到m(此图m=3)的元素拿出,它的下一个元素又从1开始编号,数到m的元素再次拿出,以此类推,直至所有的元素被拿出,由此产生一个出队编号。(则下图所示出队列序号为:3?6?1?5?2?8?4?7) 思路: 1.构建一个单向环形列表 1)先创建第一个节点,让 first 指向该节点,并形成环形 2)后面创建每一个节点时,就把新节点加入到已有的环形链表中即可
2.遍历环形链表 1)先使用辅助指针curBoy指向 first 节点 2)通过while循环遍历该环形链表(curBoy.next == first)
3.”出圈“处理 思路: 根据用户的输入,生成一个节点拿出的顺序 1)使用辅助指针?“helper”,事先应该指向环形链表中编号为k节点的前一个节点处 补:开始编号前, first 和 helper 指针先移动 k - 1 次至 k 节点之前 2) 从k节点编号时,让 first 和 helper 指针同时移动 m -1 次 3)将 first 指向的节点“出圈”?,其中 first 原来指向的节点没有被引用,就会被回收
?“出圈”图示: ?
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:15:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |