数据结构实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告手册
课程名称:数据结构指导教师:
专业:计算机科学与技术20 年—20 年第学期姓名:学号:
年级:级班级:
实验报告内容
实验题目:线性表及其应用
实验目的:掌握线性表的定义,掌握不同存储结构及基本运算
实验要求:实现约瑟夫(Joseph)问题描述:约瑟夫(Joseph)问题描述为:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,从第s个人开始从1报数,数到第m的人出列;然后从它在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计一个程序求出列顺序。
实验器材:计算机
实验电路图/程序流程图:
(1)利用链表
(2)利用数组
实验步骤/程序源代码:
//利用链表
#include
#include
#include
typedef int ElemType;
typedef struct SingleNode
{
ElemType data;
struct SingleNode *next;
}SLL,*LinkList;
int main()
{
SLL *head ,*use,*temp;
int i,n,m,k,a=0;
printf("请输入总人数n:");
scanf("%d",&n);
printf("从第m个人开始数起,请输入m:");
scanf("%d",&m);
printf("数到第k个人,该人出列,请输入k:");
scanf("%d",&k);
head = use = (SLL *) malloc(sizeof(SLL));//建立链表,形成链表头 head->data = 1;
for (i = 2; i <= n; i++)//形成其余的n-1个
{
use->next = (SLL *) malloc(sizeof(SLL));
use = use->next;
use->data = i;//第i个置编号i
}
use->next = head;//末首相连,形成环
printf("人员序号为:"); //输出人员的序号
temp=head;
for(i=0;i { printf("%d ",temp->data); temp=temp->next; } printf("\n"); for(i=0;i { use=use->next; } printf("人员出列顺序为:"); while (n) { for (i = 1; i < k; i++)//掠过k-1个 use = use->next; temp = use->next;//temp指向第k个 use->next = temp->next;//第k个从环中脱钩 printf("%d ", temp->data); free(temp);//释放第k个表元占用的空间 n--; } printf("\n"); return 0; } //利用数组 #include #include int main() { int i,k,m,n,num[50],*p; printf("输入总人数n:n = "); scanf("%d",&n); p=num; for(i=0;i *(p+i)=i+1;//从1到n给每个人编号 i=0;//i为每次循环时计数变量 k=0;//k为按1,2,3报数时的计数变量 m=0;//m为退出时的人数 while(m { if(*(p+i)!=0) k++; if(k==3) { printf("出局人序号:%d\n",*(p+i)); *(p+i)=0;//将退出时的人的编号置为0 k=0;//k报道3后,重置为0 m++;//退出时的人数加1 } i++; if(i==n) i=0;//报数到n后,i恢复为0 } while(*p==0) p++;//如果p指向的值等于0,就执行p++让它指向下一个元素,直到不为0 printf("留下的人的编号是:%d\n",*p);//p指向的编号就是最后留下来的人 system("pause"); } 实验结果分析: (1)利用链表 (2)利用数组 实验日期:2017年9月8日 成绩评定: □优秀(100-90分) □良好(89-80分) □中等(79-70分) □及格(69-60分) □不及格(60-0分) 教师签名: 年月日 实验报告内容 实验题目:栈和队列及其应用 实验目的:掌握栈和队列的定义、存储结构及基本运算,理解栈与递归的应用实验要求:设计一个程序,演示用算符优先法对算术表达式求值的过程。 实验器材:计算机 实验电路图/程序流程图: