《数据结构》上机实验报告模版Word下载.docx

上传人:b****3 文档编号:14783466 上传时间:2022-10-24 格式:DOCX 页数:25 大小:297.42KB
下载 相关 举报
《数据结构》上机实验报告模版Word下载.docx_第1页
第1页 / 共25页
《数据结构》上机实验报告模版Word下载.docx_第2页
第2页 / 共25页
《数据结构》上机实验报告模版Word下载.docx_第3页
第3页 / 共25页
《数据结构》上机实验报告模版Word下载.docx_第4页
第4页 / 共25页
《数据结构》上机实验报告模版Word下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

《数据结构》上机实验报告模版Word下载.docx

《《数据结构》上机实验报告模版Word下载.docx》由会员分享,可在线阅读,更多相关《《数据结构》上机实验报告模版Word下载.docx(25页珍藏版)》请在冰豆网上搜索。

《数据结构》上机实验报告模版Word下载.docx

实验地点:

6308

实验时间:

实验成绩:

评阅老师:

一【上机实验目的】

1.掌握二叉树的概念,包括二叉树、满二叉树和完全二叉树的定义。

2.掌握二叉树的性质。

3.重点掌握二叉树的存储结构,包括二叉树顺序存储结构和链式存储结构。

4.重点掌握二叉树的基本运算和各种遍历算法的实现。

二【实验环境】

PC机1台,,VC++6.0,easyX图形库

三【上机实验内容】

四【上机调试程序流程图】

(用传统流程图的形式表示)

五【上机调试中出现的错误信息、错误原因及解决办法】

非递归后序遍历时出现了问题,不能遍历非完全二叉树,后来用到,右孩子不存在或者已经访问过,root出栈并访问,否则,不出栈,继续访问右孩子

层次遍历是开始想的是用栈来实现,但是很麻烦,还有问题,后来用队列,解决了问题

六【上机调试后的源程序及还存在的问题】

#include<

stdio.h>

#defineMAXN100

windows.h>

graphics.h>

structBTNode

{

chartag;

BTNode*left;

BTNode*right;

};

//二叉树结点

intX[10]={75};

intY[10]={20};

//动画演示的坐标

charB[21]={'

A'

'

B'

C'

#'

D'

E'

F'

G'

H'

I'

J'

//固定动画演示的

charC[10]={'

intxx[10]={325};

//输出结果的横坐标

intflag=0;

//标记是否进行动画演示,0代表“不”,1代表“要”

voidcreatree(BTNode**root)//动画演示先序构造二叉树

staticii=0;

if(B[ii]=='

{

*root=NULL;

ii++;

}

else

*root=newBTNode;

(*root)->

tag=B[ii];

creatree(&

(*root)->

left);

creatree(&

right);

}

/*先序方式创建二叉树*/

voidBuildBTree(BTNode**root)

charc;

c=getchar();

if(c=='

tag=c;

BuildBTree(&

BuildBTree(&

voidPreVisit(BTNode*root)//递归前序遍历

if(root!

=NULL)

if(flag==0)//不动画演示

{

printf("

%c"

root->

tag);

}

else//动画演示

for(inti=0;

i<

10;

i++)

{

if(C[i]==root->

tag)

{

setcolor(GREEN);

fillcircle(X[i],Y[i],15);

setbkmode(TRANSPARENT);

setfont(20,20,"

宋体"

);

outtextxy(X[i]-10,Y[i]-7,C[i]);

setbkmode(OPAQUE);

outtextxy(xx[ii],400,C[i]);

ii++;

break;

}

}

Sleep(1500);

PreVisit(root->

voidInVisit(BTNode*root)//递归中序遍历

InVisit(root->

if(flag==0)

else

setcolor(500);

voidPostVisit(BTNode*root)//递归后序遍历

PostVisit(root->

voidNR_PreVisit(BTNode*root)//非递归前序遍历

BTNode*s[MAXN];

//栈

inttop=0;

//头指针

while(top!

=0||root!

=NULL)//如果结点不为空或栈不为空

while(root!

=NULL)//如果结点不为空

s[top]=root;

//压栈

s[top]->

tag);

//输出结点

top++;

root=root->

left;

//指向左孩子

if(top>

0)//如果栈不为空

top--;

//出栈

root=s[top];

root=root->

right;

//指向右孩子

voidNR_InVisit(BTNode*root)//非递归中序遍历

{

//栈

//头指针

=0||root!

=NULL)//如果结点不为空

s[top++]=root;

//压栈

//指向左孩子

root=s[--top];

voidNR_PostVisit(BTNode*root)//非递归后序遍历

BTNode*s[MAXN],*tmp=NULL;

s[top++]=root;

root=root->

0)

root=s[--top];

/*右孩子不存在或者已经访问过,root出栈并访问*/

if((root->

right==NULL)||(root->

right==tmp))

printf("

tmp=root;

//保存root指针

root=NULL;

//当前指针置空,防止再次入栈

/*不出栈,继续访问右孩子*/

top++;

//与root=s[--top]保持平衡

root=root->

voidCengci(BTNode*root)/*按层次遍历*/

BTNode*V[MAXN],*p;

intfront=0,area=0;

//队列

if(root!

area++;

V[area]=root;

while(front<

area)

front++;

p=V[front];

if(flag==0)

p->

else

for(inti=0;

if(C[i]==p->

{

setcolor(500);

fillcircle(X[i],Y[i],15);

setbkmode(TRANSPARENT);

setfont(20,20,"

outtextxy(X[i]-10,Y[i]-7,C[i]);

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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