数据结构实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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分)

教师签名:

年月日

实验报告内容

实验题目:栈和队列及其应用

实验目的:掌握栈和队列的定义、存储结构及基本运算,理解栈与递归的应用实验要求:设计一个程序,演示用算符优先法对算术表达式求值的过程。

实验器材:计算机

实验电路图/程序流程图:

相关文档
最新文档