ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:295.88KB ,
资源ID:19848001      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19848001.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验报告杨辉三角约瑟夫环Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验报告杨辉三角约瑟夫环Word下载.docx

1、 QueueLength ( Q )返回Q的元素个数,即队列长度 GetHead ( Q , &e )Q为非空队列用e返回Q的队头元素 EnQueue ( &Q , e )插入元素e为Q的新队尾元素 DeQueue ( &Q , &删除Q的队头元素,并用e返回其值 QueueTraverse ( Q , visit( ) )Q已存在且非空从队头到队尾,依次对Q的每个数据元素调用函数visit( )。一旦visit( )失败,则操作失败。ADT Queue2. 主程序流程void main ( )初始化;输入数据;执行功能;显示结果;3. 各程序模块间调用关系主程序 各功能模块三、 详细设计1.

2、抽象数据类型定义定义数据类型QNode 整形数据 data; 指针变量 *next;QNode,*QueuePtr;typedef struct 设定队头指针 设定队尾指针LinkQueue;2.各功能模块算法(1)/构造空队列Q int InitQueue 获取数据结构类型QNode;设定头结点,头尾指针指向头结点;(2)/插入e为Q的队尾元素int EnQueue分配动态内存空间;确认分配成功;队尾元素赋值;定义队尾指针;(3)/销毁Q的队头元素并用e返回其值 int DeQueue若头尾元素相等 返回ERROR;队头元素赋p;P值赋e;销毁队头元素;(4)/用e返回Q的队头元素 int

3、GetHead 若头尾元素不相等 队头元素赋e返回;否则 不返回;3.主函数void main()定义整形变量n , j , i , t , x , level ;通过键盘输入杨辉三角级数level初始化队列 插入1为队列队尾元素/输出杨辉三角令n=1;当n=level+1时循环,每轮循环结束n+1 插入1为队列队尾元素 令j=1;当j=level-n+1时循环,每轮循环结束j+1 输出空格以调整三角结构; 令i=1;当i1 /输出行尾的1,完成一行的输出 用x获取并销毁Q的队头元素; 输出x; 将1插入队尾; 输出换行以调整结构; 4.函数调用关系图Main函数调用InitQueue函数调用

4、EnQueue函数调用DeQueue函数调用GetHead函数 结束四、 调试分析程序的编写及调试基本正常,开始时由于细节问题导致杨辉三角结构上出现些许问题:1. 主函数输出的杨辉三角有顶角(即首行为1),后调整循环判定条件并增加if语句消除首行使三角输出正常2. 杨辉三角结构混乱,不整齐,后通过设定输出字符数调整正常五、 用户使用说明根据提示输入所需杨辉三角级数即可示例:请输入所需的杨辉三角级数:7六、 测试结果操作及输出流程详见如下截图七、 附录源程序如下:#include stdlib.h /引用的函数库typedef struct QNode int data; struct QNod

5、e *next; QueuePtr front; /队头指针 QueuePtr rear; /队尾指针int InitQueue(LinkQueue &Q) /构造空队列Q Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode); if(!Q.front) exit(-2); Q.front-next=NULL; return 1;int EnQueue(LinkQueue &Q,int e) /插入e为Q的队尾元素 QueuePtr P=(QueuePtr)malloc(sizeof(QNode);P) P-data=e; Q.rear-next=P; Q

6、.rear=P;int DeQueue(LinkQueue &Q,int &e) /销毁Q的队头元素并用e返回其值 if(Q.front=Q.rear) return 0; QueuePtr P=Q.front-next; e=P-data;next=P- if(Q.rear=P) Q.rear=Q.front; free(P);int GetHead(LinkQueue Q,int & /用e返回Q的对头元素 if(Q.front!=Q.rear) e=Q.front-next- return 1; else int n,j,i,t,x,level; /定义变量 printf(请输入所需的杨

7、辉三角级数: n); scanf(%d,&level); /获取杨辉三角级数 LinkQueue Q; InitQueue(Q); EnQueue(Q,1); /插入1为队列队尾元素n所求杨辉三角如下: for(n=1;n=level+1;n+) EnQueue(Q,1); /插入1为队列队尾元素 for(j=1;j=level-n+1;j+) printf( for(i=1;i1) /判断语句确保首行为空,即去除杨辉三角顶角 DeQueue(Q,x); printf(,x);n实验二 约瑟夫环(Josephus Ring)本程序中,需输入的系数n,s,m都是正整数,由键盘按提示依次输入,以回

8、车结束从屏幕输出出列顺序用户由键盘输入约瑟夫环的必要数据(人数,起始序号,出列数),由屏幕输出出列顺序7 2 34 7 3 1 6 2 5以单向循环链表实现该程序1. 抽象数据类型的定义ADT ListNodeD=ai | aiCharSet,i= 1,2,n,n0 ai-1 ,ai | ai D, I=2,n InitList(&L)构造一个最大长度ms内容为空的有序表L。 ClearList(&线性表L已经存在。将L重置为空表。 EmptyList(L)若L为空表返回TRUE,否则返回FALSE。 ListLength(L)返回L中数据元素个数。 GetElem(L, pos, &线性表L

9、已经存在,1iListLength(L)。用e返回L中第i个数据元素的值。 LocateElem(L, e)返回L中第1个与e相同的元素的位序。若不存在返回0。 ListInsert (L, i, e)在L中的第i个元素的位置之前插入新元素 e,L的长度加1。ListDelete(L, pos, e)删除L的第i个数据元素,并用e返回其值,L的长度减1。 ListTraverse(L)依次对L的每个数据元素进行访问。ADT CirLinkedList void main() 初始化; 输入数据; 执行功能;3. 程序模块间调用关系 主程序 定义数据类型 LNode整形变量 num;指针变量 *

10、next;定义LNode类型NODE; 2. 各程序模块算法NODE *createlinklist(int n)/初始化循环链表,并返回头指针 定义指针 *head,*p,*q; 整形 i=1; 定义头指针; 赋p值i; 令i=2;=n是循环,每轮循环结束i+1 动态内存分配; 若q=0 返回0; q-p-next;p=q; 表尾指针指向表头; 返回头指针;joseph函数(NODE *p,int n,int m) /约瑟夫函数,用于输出约瑟夫环 整形 i,j; NODE *q; 令i=1;=n时循环,每轮循环末i+1m时循环,每轮循环末j+1 p-p; p-q; q- 输出q值; 释放q;

11、3. 主函数算法main() NODE *head; 整形 n,s,m; 整形 i; 由键盘获取n; 由键盘获取s; 由键盘获取m; 获取头指针head; 若s=1n时循环,每轮循环结束i+1 head-head; elses-1时循环,每轮循环结束i+1 调用joseph函数,输出序列;4. 函数调用关系图 main函数 调用createlinklist函数 调用joseph函数结束 程序的编写和调试基本正常,开始编写程序时忘记考虑s=1时的情况,导致程序出现bug,经过单步跟踪调试后发现程序的错误,采用if语句对s=1的情况单独处理将问题解决。本实验采用数据抽象的与模块化程序设计方法。这对

12、于提高我们编写算法的能力是一次很好的锻炼机会。 根据提示输入人数n,起始点s,间隔m 围绕圆桌的人数为? 7 从第几人开始? 2 数到几的人出列?3#includenum=i; for(i=2;=n; q=(struct LNode*)malloc(sizeof(struct LNode); if(q=0) return(0);next=q; p=q;next=head; /使链表尾指向链表头,形成循环链表 return head;void joseph(NODE *p,int n,int m)int i,j; NODE *q; for(i=1; for(j=1;m; p=p- /计算出列者序号 q=p-next=q-%d ,q-num); free(q); NODE *head; int n,s,m; int i; /确定计算系数围绕圆桌的人数为?n);从第几人开始?s);数到几的人出列?m); /确定头指针 head=createlinklist(n); if(s=1) for(i=1;n; head=head- elses-1; head=head- /输出约瑟夫环出列顺序出列的顺序如下: joseph(head,n,m);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1