资源描述:
《数据结构课程设计-joseph环》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程设计说明书NO.18Joseph环1.课程设计目的⑴通过独立解决某个课程设计问题,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。⑵深刻理解、牢固掌握数据结构和算法设计技术,提高分析和解决实际问题的能力。⑶在程序设计方法以及上机操作等基本技能和科学作风方面进行比较系统和严格的训练。2.设计方案论证2.1设计思路首先,定义两个结构体,将个人的信息写入其中内容包括个人的顺序号(Num),个人的密码m(随机输入的值)及指针.第二,再将每个人的信息存储于一个单向循环链表内.第三,根据题目要求编写程序,开始
2、随机把一个数赋给m,开始报数(查找)则将顺序号为m的人的编号提出列,并将其的密码(随机输入的)赋给m.最后,m有了新值,再从出列的人的下一个位置开始重复上面第三步,直到所有人的顺序号都被调出,结束程序。2.2设计方法:2.2.1结构设计利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。输入数据:建立输入函数处理输入数据,输入m值和n值,存放在由DATA结构体为存储元素的顺序存储结构里。再建立单向循环链表,节点结构为NODE结构体,将所有信息存在链表里。输出形式:建立一个输出函数,将正确的输出序列。2.3算法设计2.3.1线性表的单链表存储结构沈阳
3、大学课程设计说明书NO.18typedefstructnode{intnum;//成员编号intm;//每个成员的唯一编码structnode*next;}NODE,*LINK;2.3.2线性表的动态分配顺数存储结构typedefstructdata//输入函数中数据存储节点结构{intnum;intm;}DATA;2.3.3数据输入函数DATAInputData()输入函数采用线性表的顺序存储结构,线性表的顺序存储结构是一种随机存取的存储结构。特点是存储空间连续,用一组地址连续的存储单元依次存储线性表的数据元素。并且逻辑位置相邻的两个元素其物理位置也相邻。每一个
4、数据元素的存储位置都和线性表的起始位置相差一个和数据元素在线性表中的位序成正比的常数,由此,只要确定了存储线性表的起始位置,线性表中的任一数据元素都可以随机存取。由于高级程序设计语言中的数组类型也有随机存取的特性,因此,通常都用数组来描述数据结构中的顺序存储结构。线性表的顺序存储结构需要预先分配存储空间。输入函数算法设计如下:DATA*InputData(int*n)//数据输入函数,n是节点的个数{DATA*d,*p,*s;//d用来存放数组空间的首地址沈阳大学课程设计说明书NO.18inti;printf("Howmanypeoplethereare?")
5、;printf("PleaseInputlength:");scanf("%d",n);//输入节点数d=(DATA*)malloc(*n*sizeof(DATA));//申请内存空间函数malloc返回首地址存放在DATA类型的d变量里p=d;for(i=1;i<=*n;i++)//动态输入各节点信息{printf("Number%d----inputm:(mmeansthesecretofthem!):",i);scanf("%d",&p->m);p->num=i;p++;}return(d);//返回内存空间的首地址}沈阳大学课程设计说明书NO.18输入函数
6、流程图如下:开始输入nd=(DATA*)malloc(*n*sizeof(DATA));p=d;i=1i<=*n输入mp->num=i;p++return(d)结束YN图1输入函数流程图2.3.4单向循环链表的建立LINKCreateLinklist(DATA*d,intn)单向循环链表是一种链式存储结构,它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环,由此,从表中任意结点出发均可找到表中其他结点。单向循环链表的构造类似于单向链表的构造,但是不同的是最后一个元素的指针指向的是首元素。沈阳大学课程设计说明书NO.18循环链表的操作和线性链表基本一致
7、,差别仅在于算法中的循环条件不是p或p->next是否为空,而是他们是否指向头指针,但有的时候,若在循环链表中设置尾指针而不设头指针,即带尾指针的单向循环链表,可使某些程序简化。单链表和顺序存储结构不同,它是一种动态结构,整个可用存储空间可为多个链表共同享用,每个链表占用的空间不需预先分配划定,而可由系统应需求直接生成,因此,建立线性表线性存储结构的过程就是一个动态生成链表的过程。在单链表中任何两个元素的存储位置之间没有固定的联系。但每个元素的存储位置都包含在其直接前驱节点的信息之中。假设p是指向线性表中第i个数据元素(节点ai)的指针,则p->next是指向第i
8、+1个数据