首页 实验二 线性表的链式存储结构

实验二 线性表的链式存储结构

举报
开通vip

实验二 线性表的链式存储结构南昌航空大学实验报告 课程名称:数据结构实验名称:实验二线性表的链式存储结构 班级:学生姓名:冯华华学号:11046213 指导教师评定: XXX 签名: XXX 一、问题描述 1单链表的实现与操作。 2设计一个程序求出约瑟夫环的出列顺序。约瑟夫问题的一种描述是:编号为1,2,…, n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个正整 数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。 报m的人出列,将他的密码作为新的m 值,从他在顺时针...

实验二 线性表的链式存储结构
南昌航空大学实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 课程名称:数据结构实验名称:实验二线性表的链式存储结构 班级:学生姓名:冯华华学号:11046213 指导教师评定: XXX 签名: XXX 一、问题描述 1单链表的实现与操作。 2 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 一个程序求出约瑟夫环的出列顺序。约瑟夫问题的一种描述是:编号为1,2,…, n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个正整 数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。 报m的人出列,将他的密码作为新的m 值,从他在顺时针方向上的下一个人开始重新从1 报数,如此下去,直到所有人全部出列为止。例如,n=7,7个人的密码依次为: 3,1,7,2,4,8,4,m的初值取6,则正确的出列顺序应为6,1,4,7,2,3,5。要求使用单向循环 链表模拟此出列过程。 二、程序分析 约瑟夫环的大小是变化的,因此相应的结点也是变化的,使用链式存储结构可以动态的 生成其中的结点,出列操作也非常简单。用单向循环链表模拟其出列顺序比较合适。 用结构指针描述每个人: struct Joseph {int num;/*环中某个人的序号*/ int secret;/环中某个人的密码*/ struct Joseph *next;/指向其下一个的指针*/}; 1)初始化约瑟夫环: 调用 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数struct Joseph *creat()生成初始约瑟夫环。在该函数中使用head 指向 表头。输入序号为0时结束,指针p1指向的最后结束序号为0的结点没有加入到 链表中,p2 指向最后一个序号为非0 的结点(最后一个结点)。 2)报数出列: 调用函数voil sort(struct Joseph * head,int m),使用条件p1->next!=p1判断 单向链表非空,使用两个指针变量p1和p2,语句p2=p1;p1=p1->next;移动指针, 计算结点数(报数);结点p1出列时直接使用语句:p2->next=p1->next,取出该 结点中的密码作为新的循环终值。 三、调试过程及实验结果 最后程序运行结果如下所示: 输入数据:数据格式为序号,密码 输入0,0为结束 1,3↙<回车> 2,1↙<回车> 3,7↙<回车> 4,2↙<回车> 5,4↙<回车> 6,8↙<回车> 7,4↙<回车> 0,0↙<回车> 输入m值 6↙<回车> 出列的序号是 6→1→4→7→2→3→5 四、附录 源程序文件清单: 该程序的源代码如下: #define NULL 0 #define LENGTH sizeof(struct Joseph) #include #include struct Joseph { int num; int secret; struct Joseph *next; };/*定义结点num为序号,secret为密码*/ /*创建初始链表函数*/ struct Joseph *creat() { struct Joseph *head; struct Joseph *p1,*p2; int n=0; p1=p2=(struct Joseph *)malloc(LENGTH); scanf("%d,%d",&p1->num,&p1->secret); head=NULL; while(p1->num!=0) { n=n+1; if(n==1) { head=p1; } else p2->next=p1; p2=p1; p1=(struct Joseph *)malloc(LENGTH); scanf("%d,%d",&p1->num,&p1->secret); p2->next=head; return(head); } } /*报数出列*/ void sort(struct Joseph * head,int m) { struct Joseph *p1,*p2; int i; if(head==NULL) printf("\n链表为空!\n"); p1=head; while(p1->next!=p1) { for(i=1;inext; } p2->next=p1->next; m=p1->secret; printf("%d ",p1->num); p1=p2->next; if(p1->next==p1) { printf("%d ",p1->num); } } } int main() { struct Joseph *head; int m; printf("\n输入数据:数据格式为序号,密码\n输入0,0为结束\n"); head=creat(); printf("输入 m值\n"); scanf("%d",&m); if(m<1)printf("error! 请输入一个合法的 m值!"); printf("出列的序号是:\n"); sort(head,m); }
本文档为【实验二 线性表的链式存储结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_219945
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:8
分类:互联网
上传时间:2019-02-24
浏览量:35