数据结构实训报告Word格式.docx
- 文档编号:15365356
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:19
- 大小:163.81KB
数据结构实训报告Word格式.docx
《数据结构实训报告Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构实训报告Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
输出形式:
输出第一天共摘桃子的个数。
测试数据:
day=6。
2、顺序表的插入
从键盘输入任一整数,使其插入到有序的数列:
{15,42,86,118,235,289,324,390,500,1000}中,插入后仍然保持从小到大的顺序。
从键盘输入插入的数据x。
输出原序列和插入新数后的序列。
x=665。
3、货物入库和出库
任务:
某超市要将货物进行入库操作,模拟其入库和出库的操作。
要求:
从键盘输入所要入库货物的总数n、入库的货物号码。
输出入库的货物号码序列和出库的货物序列。
n=8,入库序列为:
2,3,6,18,22,25,29,30。
实训仪器、仪表与工具、器材:
硬件设备为多媒体计算机、实验运行环境及软件为turboc或MicroSoftvisualC++6.0及Windows2000操作系统、程序设计语言为C语言。
实训内容、方法与步骤(流程):
实训内容:
某超市要将货物进行入库操作,模拟其入库和出库的操作。
4、约瑟夫环编号是1,2,•••,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个人开始顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他的顺时针方向的下一个开始重新从1报数,依次下去,直到所有的人全部出列或者剩余一个人为止。
设计一个程序来求出所有出列顺序或最后一个赢家。
利用单向循环链表存储结构模拟此过程,并从键盘输入人数n以及m的初值,并输入每个人的密码和姓名,建立单循环链表。
输出形式:
正确的输出序列或最后一个赢家。
5、排序
对从键盘输入的任意多个数n进行从小到大的排序。
从键盘输入要求排序的数的个数n以及要排序的数,分别利用起泡法和快速排序法来实现。
输出:
排序后的数,每行输出五个数。
实训方法与步骤:
#include<
stdlib.h>
stdio.h>
intmain()
{
printf("
请输入猴子吃桃的天数n:
按回车键结束\n"
);
intx=1,y,n,i;
scanf("
%d"
&
n);
for(i=n;
i>
0;
i--)
{
x=x*2;
y=3*x-2;
}
第一天猴子一共摘得桃子:
%d\n"
y);
inta[50]={15,42,86,118,235,289,324,390,500,1000};
intx,i;
for(i=0;
i<
10;
i++)
printf("
%d"
a[i]);
\n请输入要插入的数:
"
x);
for(i=9;
=0;
if(x<
a[i])
a[i+1]=a[i];
a[i]=x;
插入后的数列为:
\n"
11;
malloc.h>
#defineoverflow-2
#defineok1
#defineerror0
#defineSTACK_INIT_SIZE100
#defineSTACKINCREMENT10
#defineselemtypeint
typedefintStatus;
typedefstruct{
int*base;
int*top;
intstacksize;
}sqstack;
StatusInitstack(sqstack*s)
s->
base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!
s->
base)exit(overflow);
top=s->
base;
stacksize=STACK_INIT_SIZE;
returnok;
}
Statuspush(sqstack*s,selemtypee)
if(s->
top-s->
base>
=s->
stacksize)
{
s->
base=(int*)realloc(s->
base,(s->
stacksize+STACKINCREMENT)*sizeof(int));
base)exit(overflow);
base+s->
stacksize;
stacksize+=STACKINCREMENT;
*s->
top++=e;
Statuspop(sqstack*s,int*e)
top==s->
base)
空栈\n"
returnerror;
else
*e=*--s->
top;
*e);
voidmain()
{
intm,n,i,j,n1,m1;
sqstacks1;
Initstack(&
s1);
******欢迎使用WXB货物出入库系统******"
\n请输入所有入库货物数n:
请输入入库货物序列号:
n;
scanf("
n1);
push(&
s1,n1);
请输入出库货物总数m(m<
=%d):
n);
m);
if(m>
=0&
&
m<
=n)
"
for(j=0;
j<
m;
j++)
pop(&
s1,&
m1);
输出货物总数错误,请重新输入\n"
****感谢您的使用,欢迎你下次使用!
****\n"
4、约瑟夫环
#defineerror-1
typedefintstatus;
structstudent
intnum;
charname[20];
intmima;
}studata;
//定义结构体来保存各个数据
typedefstructlnode{
structstudentdata;
//嵌套structstudent结构体的data
structlnode*next;
}lnode,*linklist;
//结点*linklist为structlnode型指针
voidcreatelist(linklist&
l,intn)
inti,j,x;
linklisthead,p,q;
head=(linklist)malloc(sizeof(lnode));
p=head;
//p指向头结点
\n请输入序号为%d人的姓名和密码:
i+1);
p->
next=(linklist)malloc(sizeof(lnode));
//p->
next指向新生成的结点
p=p->
next;
//p指向新生成的结点
%s%d"
p->
data.name,&
data.mima);
data.num=(i+1);
next=head->
next指向头结点的next(也就是第一个结点)
刚才输入对应序号姓名密码列表:
for(x=1;
x<
=6;
x++)
%d\t%s\t%d\n"
p->
data.num,p->
data.name,p->
请输入初始m值:
j);
if(j<
1)
输入错误!
请重新输入\n"
while(p->
next!
=p)
intm=1;
for(m=1;
j;
m++)
p=p->
q=p->
p->
next=q->
j=q->
data.mima;
第%d号%s输出\n"
q->
data.num,q->
data.name);
free(q);
最后赢家%d号是%s\n"
structstudent;
intn;
linklisthead;
\n===》请输入人数n:
createlist(head,n);
#defineove
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 报告