- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言综合实验设计报告
题目:数据结构:二叉树的遍历
学院:化学工程学院
专业:制药工程
班级:050607
学号:
姓名:
设计日期:2007年1月11日
指导老师:
一 选题背景
数据结构是由若干特性相同的数据元素构成的集合,且在集合上存在一种或多种关系。由关系不同可将数据结构分为四类:线性结构、树形结构、图状结构和集合结构。数据的存储结构是数据逻辑结构在计算机中的映象,由关系的两种映象方法可得到两类存储结构:一类是顺序存储结构,它以数据元素相对的存储位置表示关系,则存储结构中只包含数据元素本身的信息;另一类是链式存储结构,它以附加的指针信息(后继元素的存储地址)表示关系。数据结构课程是离散数学的后续课程,并是操作系统、编译原理、数据库系统、计算机算法设计与分析、计算机网络、软件工程、人工智能等的基础课程,是将来进行大型程序设计的一个训练过程。
二 设计思想
通过调用函数的方法进行二叉树的遍历,定义坐标固定结点的位置。自动建立树和手动建立树的标志,选择:2手动,1自动。文本模式下创建树的过程,如果选择1自动,电脑自动建立树,如果选择2手动,,需要人工手动建立。手动提示输入结点,创建好树。再用图形显示创建好的树,进行先序,中序,后序遍历。遍历时显示每个结点的过程。最后关闭图形。
三 主要问题的解决方法及技术关键
存在的主要问题是在手动创建树时怎样输入结点,当选择“人工手动建立”时,在提示后依次输入26个字符或数字,每行一个。此时树就能建立,然后用图形显示出来。本程序的技术关键是建立二叉树和图形显示遍历的过程,分别用到Tree *CreatTree(),Void DrawTree(Tree *t)等函数。遍历结束后,图形关闭。
四 流程图
开始
开始
主函数
主函数
文本模式下创建树
文本模式下创建树
选择
选择
常量2常量1
常量2
常量1
Printf()
Printf()
Root=InitTree()
Root=InitTree()
调用函数Tree*InitTree()
图形显示创建的树
图形显示创建的树
前序遍历
前序遍历
中序遍历
中序遍历
遍历时显示结点的过程
遍历时显示结点的过程
后序遍历
后序遍历
图形初始化
图形初始化
图形关闭
END
五 程序清单
/********tree2.c二叉树演示********/
#include graphics.h
#include stdio.h
#include stdlib.h
#include dos.h
#include time.h
typedef struct TREE
{
char data;/*树的结点数据*/
struct TREE *lchild;
struct TREE *rchild;
int x;/*树的x坐标*/
int y;/*树的y坐标*/
}Tree;
struct OUTPUT
{
int x;/*三种遍历的x坐标*/
int y;/*三种遍历的y坐标*/
int num;
}s;
int nodeNUM=0;/*统计当前的结点数字,最多26个*/
char way;/*自动建立树和手动建立树的标志,2手动,1自动*/
char str[3];/*显示结点数据的字符串*/
void Init();/*图形初始化*/
void Close();/*图形关闭*/
Tree *CreatTree();/*文本模式下创建树的过程*/
Tree *InitTree(int h,int t,int w);/*创建树,h层次,t横坐标,w树之间的宽度,n树的建立方式*/
void DrawTree(Tree *t);/*用图形显示创建好的树*/
void Preorder(Tree *t);/*前序遍历*/
void Midorder(Tree *t);/*中序遍历*/
void Posorder(Tree *t);/*后序遍历*/
void DrawNode(Tree *t,int color);/*遍历时显示每个结点的过程*/
void ClrScr();/*清空树的区域*/
void main()
{
Tree *root;
randomize();
root=CreatTree();/*创建树*/
Init();
DrawTree(root);/*每次遍历前显示白色的树*/
sleep(1);
s.x=100;s.y=300;s.num=1;/*每次遍
您可能关注的文档
- 2015高考语文(江苏)一轮讲义:第4单元 正确使用词语.doc
- 2015高考语文(江苏)一轮讲义:第6单元 提炼语意.doc
- 2015高考语文(江苏)一轮讲义:第7单元 选用、仿用、变换句式.doc
- 2015高考语文(江苏)一轮讲义:第10单元 理解与现代汉语不同的句式和用法.doc
- 2015高考语文(江苏)一轮讲义:第12单元 鉴赏古诗的形象.doc
- 2015河北省栾城县高考英语阅读理解暑假学生自练(4)及答案.doc
- 2015河北省栾城县高考英语阅读理解暑假学生自练(5)及答案.doc
- 2015河北省栾城县高考英语阅读理解暑假学生自练(8)及答案.doc
- A8系统管理员运维培训.pptx
- Canon佳能LBP-2900激光打印机简体中文版说明书.pdf
文档评论(0)