| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构约瑟夫环实验报告 -> 正文阅读 |
|
[数据结构与算法]数据结构约瑟夫环实验报告 |
目的:能够熟练掌握线性表的基本操作在顺序和链式两种存储结构上的实现,进一步理解线性表的逻辑结构和存储结构,提高使用理论知识指导解决实际问题的能力。 要求:1.建立数据模型,确定存储结构; 2.对任意人数、密码,都能实现约瑟夫环问题; 3.出圈顺序可以依次输出,也可以用一个数组输出。
1.实验问题分析 (1)由于当某个人退出圆圈后,报数的工作要从下一个人继续,剩下的人仍要围成一个圆圈,这个问题具有循环性质,考虑使用循环链表; 由于退出圆圈的这个指令对应着结点的删除操作,且这种删除操作使用频繁,考虑选择效率较高的链表结构; 循环链表的结点定义为如下结构类型: 创建一个长度为n的循环链表: ?????? (2)由于退出圆圈的这个指令对应着结点的删除操作,于是定义了一个delete函数。在删除结点的时候考虑到几个特殊的情况,头尾结点。在删除第一个结点时,需要将head 指针下移,尾结点的next也需指向第二个结点;删除尾结点时,要将尾结点前的结点与第一个结点相连。当只剩下一个结点时,不需要删除,直接输出data的值。具体实现函数如下: (3)主程序执行。主程序运行时,调用函数。 ?
2.从键盘输入整数m(出圈数)和n(总人数)(1<=m<=n),从第1个结点开始计数为1,当计数到第m个结点时,输出该第m 结点对应的编号,将该结点从表中消除,并从输出结点的下一个结点开始计数器count重新计数到m,这样,不断重复进行计数,不断地输出,直到输出了这个链表的全部结点为止。 如,当n=8,m=3时,输出序列为:3,6,1,5,2,8,4,7。 3.代码的实现如下:
4.实验结果 5. 实验总结分析 通过这次实验,我进一步增强了对于链表的理解,也对链表的操作和实现更为熟悉。学习掌握了如何实现置空表、求表的长度、取结点、定位运算、插入运算、删除运算、建立不带头结点的单链表、建立带头结点的单链表、输出带头结点的单链表等操作。同时,通过查阅资料,请教同学,分析问题,解决问题,也锻炼了我实际操作时的动手能力。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 14:25:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |