数据结构》期中作业Word格式.docx

上传人:b****2 文档编号:5331261 上传时间:2023-05-05 格式:DOCX 页数:13 大小:17.77KB
下载 相关 举报
数据结构》期中作业Word格式.docx_第1页
第1页 / 共13页
数据结构》期中作业Word格式.docx_第2页
第2页 / 共13页
数据结构》期中作业Word格式.docx_第3页
第3页 / 共13页
数据结构》期中作业Word格式.docx_第4页
第4页 / 共13页
数据结构》期中作业Word格式.docx_第5页
第5页 / 共13页
数据结构》期中作业Word格式.docx_第6页
第6页 / 共13页
数据结构》期中作业Word格式.docx_第7页
第7页 / 共13页
数据结构》期中作业Word格式.docx_第8页
第8页 / 共13页
数据结构》期中作业Word格式.docx_第9页
第9页 / 共13页
数据结构》期中作业Word格式.docx_第10页
第10页 / 共13页
数据结构》期中作业Word格式.docx_第11页
第11页 / 共13页
数据结构》期中作业Word格式.docx_第12页
第12页 / 共13页
数据结构》期中作业Word格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构》期中作业Word格式.docx

《数据结构》期中作业Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构》期中作业Word格式.docx(13页珍藏版)》请在冰点文库上搜索。

数据结构》期中作业Word格式.docx

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);

注:

实验一,实验二和实验四为必做实验。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2