- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构与算法设计》实验报告
《数据结构与算法设计》 实验报告 ——实验一 学院: 班级: 学号: 姓名: 实验目的 熟悉VC++6.0环境,学习使用C++实现链表的存储结构; 2. 通过编程,上机调试,进一步理解线性表、链表、环表的基本概念,并利用单向环实现约瑟夫环。 二、实验内容 1、 采用单向环表实现约瑟夫环。 请按以下要求编程实现: 从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。环表中的结点编号依次为1,2,……,m。 从键盘输入整数s(1=s=m)和n,从环表的第s个结点开始计数为1,当计数到第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。 例如,m=10,s=3,n=4。则输出序列为:6,10,4,9,5,2,1,3,8,7。 三、程序设计 1、概要设计 应用单向环寄存数字序列。 单向环表的抽象数据类型线性表定义如下: ADT List{ 数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0} 数据关系:R1={ai-1,aiai-1,ai∈D,i=2,…,n} 基本操作: Creat(LinkListL,int m) 操作结果:构造一个有m个节点的单向环表L。 YSF(int m,int s,int n,LNode *L) 初始条件:单向环表L已经存在。 操作结果: 找到单向环表L的第s个结点,并进行约瑟夫环的计算,并输出相应值。 }ADT List 主程序流程 主程序首先调用Creat(LinkListL,int m)函数,创建含有m个结点的单向环表L;再调用YSF(int m,int s,int n,LNode *L)函数,找到第s个结点,并进行约瑟夫环的计算,在屏幕上显示计算结果。 模板调用关系 由主函数模板调用创建模块和运算模块。 由运算模块将结果输出。 (4) 流程图 2、详细设计 (1)数据类型设计 typedef struct LNode //定义结构体 { int data; struct LNode *next; }LNODE; (2)操作算法设计 void Create(LNode *L,int m) //创建单向环表 { int i; LNode *p; if(m1) { p=(LNode*)malloc(sizeof(LNode)); p-data=m; p-next=L; L-next=p; m=m-1; } for(i=m;i1;i--) //插入到表头 { p=(LNode*)malloc(sizeof(LNode)); p-data=i; p-next=L-next; L-next=p; m=m-1 } } void YSF(int m,int s,int n,LNode *L) //找到第s个结点并进行约瑟夫计算 { int a=1,b=0; LNode *p,*head; p=L; head=p-next; while(head-next!=p) head=head-next; while(p-data!=s) //寻找起始结点 { p=p-next; head=head-next; } for(b=m;b0;b--) { for(a=1;an;a++) { p=p-next; head=head-next; } printf(%d\n,p-data); head-next=p-next; free(p); p=head-next; } } (3) 主函数设计 void main() { //主函数 int m,s,n; LNode *L=NULL; scanf(%d %d %d,m,s,n); L=(LNode*)malloc(sizeof(LNode)); //建立第一个结点 L-data=1; L-next=NULL; Create(L,m); YSF(m,s,n,L); //计算并输出结果 } 四、程序调试分
您可能关注的文档
最近下载
- 新人音版二年级音乐下册优秀教学设计《共产儿童团歌》教案.doc VIP
- 肝硬化诊治指南2025年.docx
- 初中数学新人教版八年级上册13综合与实践 确定匀质薄板的重心位置教学课件2025秋.pptx VIP
- 08【人教版英语字帖】八年级上册单词表衡水体字帖(新目标含音标).pdf VIP
- 2023年10月自考06089劳动关系与劳动法押题及答案.pdf VIP
- 新教科版小学科学实验目录五年级上册.docx VIP
- 合理用药用药班会PPT课件.pptx VIP
- 结构设计弯矩二次分配法计算(表格自带公式).xls VIP
- 规范言行从我做起主题班会.pptx
- PanelView Plus 7 Performance 终端用户手册.pdf VIP
文档评论(0)