数据结构Word文档格式.docx

上传人:b****6 文档编号:21876699 上传时间:2023-02-01 格式:DOCX 页数:13 大小:223.25KB
下载 相关 举报
数据结构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

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

数据结构Word文档格式.docx

stdio.h"

#include<

malloc.h>

typedefintdatatype;

#definemax60

typedefstructnode

{

chardata;

structnode*lchild,*rchild;

}bitree;

bitree*creat()

{

inti,j;

bitree*root,*s,*Q[max];

charch;

printf("

请输入要建立的树的下标和数值:

"

);

scanf("

%d%c"

&

i,&

ch);

while(i!

=0&

ch!

='

0'

{

s=(bitree*)malloc(sizeof(bitree));

s->

data=ch;

lchild=NULL;

rchild=NULL;

Q[i]=s;

if(i==1)root=s;

else

{

j=i/2;

if(i%2==0)Q[j]->

lchild=s;

elseQ[j]->

rchild=s;

}

scanf("

}

returnroot;

}

voidpreorder(bitree*t)

if(t)

printf("

%c"

t->

data);

preorder(t->

lchild);

rchild);

voidinorder(bitree*t)

inorder(t->

voidpostorder(bitree*t)

postorder(t->

inthigh(bitree*t)

intl,r;

if(t==NULL)return0;

else

l=high(t->

r=high(t->

return(l>

r?

l:

r)+1;

intnodes(bitree*a)

intnum1,num2;

if(a==NULL)return0;

num1=nodes(a->

num2=nodes(a->

returnnum1+num2+1;

intleafs(bitree*b)/

intn,m;

if(b==NULL)return0;

else

if(b->

lchild==NULL&

b->

rchild==NULL)return1;

n=leafs(b->

m=leafs(b->

returnn+m;

voidmain()

inta,j,h,g;

bitree*b;

b=creat();

while

(1)

选择1前序遍历\n选择2中序遍历\n选择3后序遍历\n选择4求高度\n选择5求总结点数\n选择6求叶子结点个数\n选择0退出:

"

scanf("

%d"

a);

switch(a)

case1:

printf("

该二叉树的前序遍历是:

preorder(b);

printf("

\n"

break;

case2:

该二叉树的中序遍历是:

inorder(b);

case3:

该二叉树的后序遍历是:

postorder(b);

case4:

该二叉树的高度j=%d\n"

j);

j=high(b);

case5:

h=nodes(b);

该二叉树的总结点数h=%d\n"

h);

case6:

g=leafs(b);

该二叉树的叶子结点个数g=%d\n"

g);

}

2.3运行结果

1.建立二叉树如下图:

2.前序遍历功能运行结果如下图:

3.中序遍历功能运行结果如下图:

4.后序遍历功能运行结果如下图:

5.求高度功能运行结果如下图:

6.求总结点数功能运行结果如下图:

7.求叶子结点个数功能运行结果如下图:

8.程序运行结束如下图:

结果分析

通过这个程序主要掌握三种遍历方法,包括前序遍历、中序遍历、后序遍历,以及怎么求二叉树的高度、总结点数、叶子总个数。

并会将理论与现实结合在一起。

⑵职工工作量统计

本题为了给职工工作量进行统计排序,使用了简单的选择排序法进行排序。

这种方法类似我们人为的排序习惯:

从数据中选择最小的同第一个值交换,在从省下的部分中选择最小的与第二个交换,这样往复下去。

课程设计流程图:

开始

|

设置一个空的链表,用于存储信息

用户输入,存储到链表

根据工作量排序

输出排序后的信息

结束

#include<

stdio.h>

#defineMAX100

structworkerinfo

intnumber;

intproducts;

intrank;

}workers[MAX];

intcount;

voidinput()

intn,i;

输入工号和产品数量(工号表示输入结束):

while(count<

MAX&

(scanf("

&

n),n))

for(i=0;

i<

count;

i++)

if(workers[i].number==n)

if(i==count)

workers[count++].number=n;

n);

workers[i].products+=n;

if(count==MAX)

职工人数已达上限!

voidsort()

inti,j,k;

structworkerinfot;

for(i=0;

k=i;

for(j=i+1;

j<

j++)

if(workers[j].products>

workers[k].products||

workers[j].products==workers[k].products&

workers[j].number<

workers[k].number)

k=j;

if(i!

=k)

t=workers[i];

workers[i]=workers[k];

workers[k]=t;

if(i==0||workers[i].products!

=workers[i-1].products)

workers[i].rank=i+1;

workers[i].rank=workers[i-1].rank;

voidoutput()

inti,j,c;

i=j)

for(c=i;

c<

count&

workers[c].rank==i+1;

c++);

第%d名的职工共有%d人:

i+1,c-i);

for(j=i;

c;

printf("

%d\n"

workers[j].number);

intmain()

input();

sort();

output();

return0;

(一)输入数据:

123

234

323

215

432

(二)输出显示:

2.4结果分析

本题应用结构数组处理职工工作量的信息,主要包括职工工号和完成的产品数量等信息,使用了选择排序算法按完成数量对他们进行排序,并确定他们的名次;

用文件实现职工工作量的管理;

第四章程序设计的总结

通过这次做数据结构的课程设计,我发现真正掌握一个知识点并不只是要从书上看,还要查一些相关资料,并且理论与现实结合在一起。

这次做的是关于二叉树的课程设计,刚开始以为并不是很难,但真正做的时候才发现这一节的知识点很多,也有一些比较混淆的难点,比如二叉树的遍历就有三种情况,包括前序遍历、中序遍历、后序遍历。

当然这次在做课程设计的时候遇到一些问题,不过得到大家的帮助,问题得到解决,也成功的完成了本次的课程设计。

五章参考文献

【1】严蔚敏,吴伟明.数据结构[M].2版.清华大学出版社,1992。

【2】唐策善,数据结构——用C语言描述.高等教育出版社。

【3】殷人昆.数据结构.北京:

清华大学出版社,2001。

K

【4】严蔚敏,吴伟民,数据结构习题集(C语言版).北京清华大学出版社,1999。

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

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1