资源描述:
《09级软件工程一班数据结构课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、湖南人文科技学院计算机科学技术系课程设计说明书课程名称:C++程序设计题目:二叉树操作年级/专业/班:09级计算机系软件工程一班学生姓名:赵杰唐磊刘文飞郑宇翔学号:09436110094361020943611109436130指导教师:唐海波开题时间:2010年12月20完成时间:2010年12月28目录一设计课题二设计内容1、概要设计1.1头文件1.2宏定义1.3抽象数据类型定义1.4操作具体实现的函:1.5其他模块实现函2、详细设计2.1将二叉树中所有结点的左右子树交换2.2求二叉树高度、分支结点数和叶子结点2
2、.4插入结点到指定位置、删除指定结点2.5对二叉树进行层序、非递归中序遍历三程序清单程序调试与体会五运行结果-2--3--3--3--3--3--3--4--4--4--4-_5-_5--6-错误!未定义书签。-17—一设计课题树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。二叉树是树形结构中的一种。我们此次设计的课题就是二叉树的一些基本操作。内容分别是:己知二叉树的前序、中序序列,恢复此二叉树;求二叉树高度、分支结点数和叶子结点数;插入结点到指定
3、位置、删除指定结点;将二叉树中所有结点的左右子树交换;对二叉树进行层序、非递归中序遍历。DesignIssuesTreeisanimportantnon-lineardatastructure,intuitively,itisthedataelements(callednodesinthetree)organizedbythebranchbetweenthestructure,muchlikethetreeinthewayofnature.Binarytreeisatreestructure.Ourtopicisth
4、edesignofsomeofthebasicbinaryoperations.Contentsare:thefirstknownbinarysequence,thesequenceordertorestorethebinarytree:findbinarytreeheight,branchnodesandleafnodes:insertionnodetothespecifiedlocation,removethespecifiednode;willBinarytreeallnodesintheleftandrigh
5、tsub-treeexchange;sequenceofbinarytreefornon-recursiveinordertraversal.二设计内容1、概要设计1.1头文件^include"math,h"^include"malloc.h"^include’’stdio.h"#include"conio.h"^include"stdlib.h"1.2宏定义#definestackinitsize100#defineOK1#defineERROR0#defineOVERFLOW-11.3抽象数据类型定义typede
6、fintTElemType;typedefintStatus;//二叉树的二叉链表存储表示typedefstructBiTNode{//二叉树结构体TElemTypedata;structBiTNode*1chi1d,*rchi1d,*node;//左右•孩子指针}BiTNode,*SElemType,*BiTree;typedefstruct{//该堆栈的元素是指针类型的"base和top均是指向指针的指针SElemType氺base;SElemTypo氺top;intstacksize;}sqstack;//堆栈
7、结构1.4操作具体实现的函数T,Status(*Visit)(TElemTypee))//层序遍历//交换左右子树//计算叶子结点个数StatusExchange(BiTNode氺t)StatusLeavesNum(BiTNode*t)//计算分支结点个数//二叉树的高度//插入结点//删除结点voidBranch_Num(BiTNode*t)Statusheight(BiTNode*t)StatusInsert(BiTNode氺T,chari,TElemTypee)voidDelete(BiTNode*T,char
8、i)StatusInorderTraverseNoRecursionl(BiTreeT,Status(木Visit)(TElemTypee))//中序非递归算法1.5其他模块实现函数StatusInitStack(sqstack&s)//初始化堆枝intStackEmpty(sqstack&s)//栈空判别StatusPop(sqstack&s