1、 1 课程设计报告课程设计报告 课程名称: 数据结构课程设计 课程设计题目: 单循环链表 系: 数学与计算科学系 专 业: 信息与计算科学 年级、班: 信计 0801 姓 名: XX 学 号: 指导教师: 职 称: 讲师 XX 年 XX 月日 2 目录目录 1.问题描述问题描述3 2.基本要求基本要求3 3.测试数据测试数据4 4.算法思想算法思想4 5.模块划分模块划分4 6.数据结构数据结构4 7.源程序源程序5 8.测试情况测试情况8 9.经验和体会经验和体会8 10.参考文献参考文献9 3 1. 问题描述问题描述 1.1 问题重述问题重述 设编号为 1,2,n(n0)个人按顺时针方向围
2、坐一圈,每人持有一个正整数 密码。开始时任意给出一个报数上限值 m,从第一个人开始顺时针方向自 1 起顺 序报数,报到 m时停止报数,报 m的人出列,将他的密码作为新的 m 值,从他 在顺时针方向上的下一个人起重新自 1 起顺序报数;如此下去,直到所有人全部 出列为止。要求设计一个程序模拟此过程,并给出出列人的编号序列,并要求使 用单循环链表。 1.2 问题分析问题分析 题目要完成的是用一个程序模拟在一个很多标有序号的人围成的圈中, 报到 一个固定的数的人出圈,然后重新报数并继续循环此过程的问题。这个过程很像 是一个链表构成的环,即题目强调的用单循环链表的存储结构。而报到固定的数 的序号跳出链
3、表就可以通过对循环链表的一些基本操作来实现。 1.3 课程设计目的课程设计目的 首先,通过课程设计题目的练习,强化对所学知识的掌握及对问题分析和任务 定义的理解,对每道题目作出了相应的逻辑分析和数据结构的选择。其次,对任 务的分析,则为操作对象定义相应的数据结构,以过程化程序设计的思想方法为 原则划分各个模块,定义数据的抽象数据类型。再次,分模块对题目进行设计, 强化对 C+的掌握和对数据结构的选择及掌握。最后,程序的编译掌握对程序的 调试方法及思想,并且学会使用一些编程技巧。 2.基本基本要求要求 题目要求将问题用单循环链表来输出出列的序号,那么程序要有循环、输入 和输出功能。解决题目中的问
4、题首先就必须要了解链表的基本功能,并能创建单 循环链表,然后读取表中的数据,用顺序表来读取一个固定的数时,输出这个数 的序号。 4 3.测试数据测试数据 设计涉及到的数据比较少,只需输入总人数 n 和要报停的数 m,且这两个数 是任意的。 4.算法思想算法思想 用一个循环的链表来实现它,假设人的个数是 n,m 是要出列的序号,那么 建立一个 n 长的链表,链表最后一个元素的 next 指针指向第一个元素,这样就 形成一个循环链表,而链表的数据域储存的就是出列的序号。 5. 模块划分模块划分 List CreateList(int n):用链表来得出最后一个人的序号 int LinkedList
5、(int num_node,int number):用顺序表来得出最后一个人的序号 int SequenceList(int num_node,int number):创建循环单链表 6.数据结构数据结构 定义编码:int data 定义头结点下一个结点:struct Node *next 定义头结点:List head 定义最后一个结点:List tail 定义出列的数的序号:last typedef struct Node int data;/存储编号 struct Node *next; *List; 5 7.源程序源程序 7.1 头文件头文件 tl09.h #ifndef TL09_H_INCLUDED #define TL09_H_INCLUDED #include using namespace std; #define MAX