预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共62页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构实验源代码 第二章线性表 标题:约瑟夫环描述:约瑟夫环 编号为1,2,3,……,n的n个人按顺时针方向围坐一圈。任选一个正整数作为报数上限m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计程序输出出列顺序。输入:人数n报数上限m 人员记录1(格式为:姓名学号性别年龄班级健康状况) 人员记录2 … 人员记录n输出:第1次报数出列的人员记录 第2次报数出列的人员记录 … 第n次报数出列的人员记录输入样例:53 安弥邵10000001女28计43一般 宰觅10000002男23计79健康 顾健10000003男27计29一般 宓顽芳10000004女20计17健康 能纸垄10000005男18计11健康输出样例:顾健10000003男27计29一般安弥邵10000001女28计43一般能纸垄10000005男18计11健康宰觅10000002男23计79健康宓顽芳10000004女20计17健康提示:循环表#include<string.h> #include<ctype.h> #include<malloc.h>//malloc()等 #include<limits.h>//INT_MAX等 #include<stdio.h>//EOF(=^Z或F6),NULL #include<stdlib.h>//atoi() #include<io.h>//eof() #include<math.h>//floor(),ceil(),abs() #include<process.h>//exit() //函数结果状态代码 #defineTRUE1 #defineFALSE0 #defineOK1 #defineERROR0 #defineINFEASIBLE-1 //#defineOVERFLOW-2因为在math.h中已定义OVERFLOW的值为3,故去掉此行 typedefintStatus;//Status是函数的类型,其值是函数结果状态代码,如OK等 typedefintBoolean;//Boolean是布尔类型,其值是TRUE或FALSE structstud { charname[12]; charnum[12]; charsex[4]; intage; charclas[10]; charhealth[16]; }; typedefstudElemType; typedefstructLNode { ElemTypedate; structLNode*next; }LNode,*LinkList; voidCreateList2(LinkList&L,intn) {//正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表 inti; LinkListp,q; L=(LinkList)malloc(sizeof(LNode));//生成头结点 q=L; scanf("%s%s%s%d%s%s",L->date.name,L->date.num,L->date.sex,&L->date.age,L->date.clas,L->date.health); for(i=1;i<n;i++) { p=(LinkList)malloc(sizeof(LNode)); scanf("%s%s%s%d%s%s",p->date.name,p->date.num,p->date.sex,&p->date.age,p->date.clas,p->date.health); q->next=p; q=q->next; } p->next=L; } voidrun(LinkListL,intm) { inti; LinkListp,q; p=L; while(p) { for(i=1;i<m;i++) { q=p; p=p->next; } printf("%s%s%s%d%s%s\n",p->date.name,p->date.num,p->date.sex,p->date.age,p->date.clas,p->date.health); q->next=p->next; free(p); p=q->next; if(p==p->next) { break; } } printf("%s%s%s%d%s%s",p->date.name,p->date.num,p->date.sex,p->date.age,p->date.clas,p->date.health); printf("\n"); free(p);//要将P释放掉,应为在前面L已经被释放掉 } intmain() { intn,m; LinkL