约瑟夫环数据结构实验报告.doc_第1页
约瑟夫环数据结构实验报告.doc_第2页
约瑟夫环数据结构实验报告.doc_第3页
约瑟夫环数据结构实验报告.doc_第4页
约瑟夫环数据结构实验报告.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构实验报告实验1 线性表及其应用题目:约瑟夫环一 需求分析1 本演示程序中,人数n应为任意的,首先应输入一个值赋给初始报数上限m,程序应能自动保存出列人的序号和将出列的人所持的密码赋给m,再次作为报数上限,如此循环,直至所有人都出列为止。2 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入相应数据(即每个人所持的密码),每个人的序号由程序自动分配。3 程序执行的命令包括:(1)构造链表;(2)输入数据;(3)执行报数,储存出列人的序号,删除出列人的信息以及把出列人的密码赋给m;(4)结束。4 测试数据(1)n7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6,则这正确的出列顺序为6,1,4,7,2,3,5。二 概要设计为了实现上述操作,应以单向循环链表为存储结构。1 基本操作:new_code( ) 操作结果:构造空链表,若成功就初始化每个人的相关信息delete_code( ) 初始条件:线性链表存在 操作结果:释放指向出列的人的结点,并重新报数2 本程序包含三个模块:(1) 主程序模块;(2) 构造链表并输入每个人信息模块;(3) 释放结点模块;三 详细设计1 元素类型,结点类型和指针类型:typedef int ElemType; typedef struct LNodeint num;ElemType data;struct LNode *next;LNode; LNode *head; *this; *new; 2 每个模块的分析:(1) 主程序模块:main()int m,n,i; printf(Enter the first code (m):);scanf(%d,&m); printf(nEnter the people number (n):);scanf(%d,&n); getchar(); printf(n);new_code(n); if(head!=NULL) delete_code(n,m); elseprintf(list is emptyn);exit();for(i=0;inum=i;printf(enter the %d code(data):,i);gets(numstr); this-data=atoi(numstr);new=(LNode *)malloc(sizeof(LNode); this-next=new; this=new; i+;this-num=i;printf(enter the %d code(data):,i);gets(numstr);this-data=atoi(numstr);this-next=head; return OK;(3) 释放结点模块delete_code(int a,int b)int i;int j=0;LNode *p;while(a-)!=1) for(i=1;inext;b=this-data;strj=this-num;p-next=this-next; free(this); j+;strj=this-next-num; return OK;3 完整的程序:#include malloc.h#include stdio.h#define MAX 100#define ERROR 0#define OK 0typedef int ElemType;typedef struct LNodeint num;ElemType data;struct LNode *next;LNode;LNode *head,*this,*new;int strMAX;new_code(int a);delete_code(int a,int b);main()int m,n,i;printf(Enter the first code (m):);scanf(%d,&m);printf(nEnter the people number (n):);scanf(%d,&n);getchar();printf(n);new_code(n);if(head!=NULL)delete_code(n,m);elseprintf(list is emptyn);exit();for(i=0;inum=i;printf(enter the %d code(data):,i);gets(numstr);this-data=atoi(numstr);new=(LNode *)malloc(sizeof(LNode);this-next=new;this=new;i+;this-num=i;printf(enter the %d code(data):,i);gets(numstr);this-data=atoi(numstr);this-next=head;return OK;delete_code(int a,int b)int i;int j=0;LNode *p;while(a-)!=1)for(i=1;inext;b=this-data;strj=this-num;p-next=this-next;free(this);j+;strj=this-next-num;return OK;四 调试结果及说明1 说明(1) 本程序的运行环境为trubo c 2.0。(2) 进入演示程序后即显示提示信息:Enter the first code(m):输入初始报数值Enter the people number(n): 输入人数enter the 1 code(data): 输入第一个人所持的密码enter the 2 code(data):输入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论