《数据结构》期中作业Word文件下载.docx
- 文档编号:21066414
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:12
- 大小:17.93KB
《数据结构》期中作业Word文件下载.docx
《《数据结构》期中作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《《数据结构》期中作业Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
1)‖(i>
(*L).last+1)
{printf(“error”);
{for(j=(*L).last;
j>
=i-1;
j--)
(*L).data[j+1]=(*L).data[j];
(*L).data[i-1]=x;
(*L).last=(*L).last+1;
return
(1);
intdelete(L,i)
(*L).last+1))
{printf(“error”);
{for(j=i,j<
=(*L).last;
j++)
(*L).data[j-1]=(*L).data[j];
(*L).data--;
voidcreatlist()
{sequenlist*L;
intn,i,j;
printf(“请输入n个数据\n”);
scanf(“%d”,&
n);
for(i=0;
i<
n;
i++)
{printf(“data[%d]=”,i);
scanf(“%d”,(*L).data[i]);
(*L).last=n-1;
printf(“\n”);
printout(L)
{inti;
(*L).last;
printf(“%d”,(*L).data[i]);
main()
charcmd;
inti,t;
clscr();
printf(“i,I…..插入\n”);
printf(“d,D…..删除\n”);
printf(“q,Q……退出\n”);
do
{do
{
cmd=getchar();
while((cmd!
=‘d’)‖(cmd!
=‘D’)‖(cmd!
=‘q’)‖
(cmd!
=‘Q’)‖(cmd!
=‘i’)‖(cmd!
=‘I’));
switch(cmd)
{case‘i’,‘I’;
scanf(&
x);
i);
insert(L,x,i);
printout(L);
break;
case‘d’,‘D’;
delete(L,i);
while((cmd!
=‘q’)&
&
(cmd!
=‘Q’));
实验二二叉树的操作
1、进一步掌握指针变量、动态变量的含义;
2、掌握二叉树的结构特征,以及各种存储结构的特点及适用范围;
3、掌握用指针类型描述、访问和处理二叉树的运算。
已知以二叉链表作存储结构,试编写按层次顺序遍历二叉树的算法。
算法思想:
本算法要采用一个队列q,先将二叉树根结点入队列,然后退队列,输出该结点;
若它有左子树,便将左子树根结点入队列;
若它有右子树,便将右子树根结点入队列,直到队列空为止。
因为队列的特点是先进先出,从而达到按层次顺序遍历二叉树的目的。
#defineM100
#defineNull0
typedefstructnode
{intdata;
stuuctnode*lchild,*rchild;
}bitree;
bitree*que[M];
intfront=0,rear=0;
bitree*creat()
{bitree*t;
intx;
scanf(“%d”,&
if(x==0)
t=Null;
else
{
t=malloc(sizeof(bitree));
t→data=x;
t→lchild=creat();
t→rchild=creat();
returnt;
}
voidinorder(t)
bitree*t;
{if(t!
=Null)
{inorder(t→lchild);
printf(“%4d”,t→data);
inorder(t→rchild);
voidenqueue(t)
{if(front!
=(rear+1)%M)
{rear=(rear+1)%M;
que[rear]=t;
bitree*delqueue()
{
if(front==rear)
front=(front+1)%M;
return(que[front]);
voidlevorder(t)
bitree*t;
{bitree*p;
if(t!
{enqueue(t);
while(front!
=rear)
{p=delqueue();
printf(“%4d”,p→data);
if(p→lchild!
enqueue(p→lchild);
if(p→rchild!
enqueue(p→rchild);
main()
{bitree*root;
root=creat();
inorder(root);
levorder(root);
实验三图的操作
1、掌握图的基本存储方法;
2、掌握有关图的操作算法并用高级语言实现;
3、熟练掌握图的两种搜索路径的遍历方法。
假设以一个带权有向图表示某一区域的公交线路网,图中顶点代表一些区域中的重要场所,弧代表已有的公交线路,弧上的权表示该线路上的票价(或搭乘所需时间),试设计一个交通指南系统,指导前来咨询者以最低的票价或最少的时间从区域中的某一场所到达另一场所。
下面是R、W、Floyd求每对顶点之间最短路径算法的C语言程序,程序中矩阵A用来进行n次迭代,矩阵P用来记录路径,P[i][j]为迭代过程中当前已经求得的从顶点i到顶点j的最短路径上最后被插入的那个顶点。
算法实现:
typedefstructnode
{intno;
floatwgt;
structnode*next;
}edgenode;
typedefstruct
{charvtx;
edgenode*link;
}vexnode;
typedefvexnodeGraph[n];
voidFloyd(GraphG,floatA[n][n],intp[n][n])
inti,j,k;
for(i=0;
for(j=0;
j<
j++)
A[i][j]=G[i][j];
P[i][j]=-1;
for(k=0;
k<
k++)
for(j=0;
j<
if(A[i][k]+A[k][j]<
A[i][j])
P[i][j]=k;
A[i][j]=A[i][k]+A[k][j];
实验四排序
1、掌握常用的排序方法,并掌握用高级语言实现排序算法的方法;
2、深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用;
3、了解各种方法的排序过程及其依据的原则,并掌握各种排序方法的时间复杂度的分析方法。
统计成绩
[问题描述]给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:
(1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;
(2)按名次列出每个学生的姓名与分数。
[基本要求]学生的考试成绩表必须通过键盘输入数据而建立,同时要对输出进行格式控制。
[算法实现]下面给出的是用直接选择排序算法实现的C语言程序。
#definen30
typedefstructstudent
{charname[8];
intscore;
studentR[n];
{intnum,i,j,max,temp;
printf(“\n请输入学生成绩:
\n”);
{printf(“姓名:
”);
scanf(“%s”,&
stu[i].name);
scanf(“%4d”,&
stu[i].score);
num=1;
{max=i;
for(j=i+1;
if(R[j].score>
R[max].score)
max=j;
if(max!
=i)
{temp=R[max];
R[max]=R[i];
R[i]=temp;
if((i>
0)&
(R[i].score<
R[i-1].score))
num=num+1;
printf(“%4d%s%4d”,num,R[i].name,R[i].score);
实验五查找
一、实验目的
1、掌握查找的不同方法,并能用高级语言实现查找算法;
2、熟练掌握二叉树的构造和查找方法。
二、实验内容
设计一个读入一串整数构成一棵二叉排序树的算法。
[实现提示]二叉排序树的构成,可从空的二叉树开始,每输入一个结点数据,就建立一个新结点插入到当前已生成的二叉排序树中,所以它的主要操作是二叉排序树插入运算。
在二叉排序树中插入新结点,只要保证插入后仍符合二叉排序树的定义即可。
[算法实现]
typedefstructnode
{intkey;
intother;
structnode*lchild,*rchild;
}bstnode;
voidinorder(t)
bstnode*t;
{if(t!
{inorder(t→lchild);
printf(“%4d”,t→key);
inorder(t→rchild);
bstnode*insertbst(t,s)
bstnode*s,*t;
{bstnode*f,*p;
p=t;
while(p!
{f=p;
if(s→key==p→key)returnt;
if(s→key<
p→key)p=p→lchild;
p=p→rchild;
if(t==Null)returns;
if(s→key<
f→key)f→lchild=s;
f→rchild=s;
bstnode*creatord()
{bstnode*t,*s;
intkey;
key);
while(key!
=0)
{s=malloc(sizeof(bitree));
s→key=key;
s→lchild=Null;
s→rchild=Null;
scanf(“%d”,&
data);
s→other=data;
t=insertbst(t,s);
returnt;
{bstnode*root;
root=creatord();
inorder(root);
注:
实验一,实验二和实验四为必做实验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期中 作业