ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:184.21KB ,
资源ID:599146      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/599146.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整word版广东工业大学数据结构二叉树课程设计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整word版广东工业大学数据结构二叉树课程设计.docx

1、完整word版广东工业大学数据结构二叉树课程设计数据结构实验报告 题目:二叉树抽象数据类型 学 院 计算机学院 专 业 计算机科学与技术 年级班别 学 号 学生姓名 指导教师 成 绩 _2013年6月一实验概要实验项目名称: 二叉树抽象数据类型的实现实验项目性质: 设计性实验所属课程名称: 数据结构实验计划学时: 6二.实验目的1. 了解二叉树的定义以及各项基本操作。2. 实现二叉树存储、遍历及其他基本功能三. 实验仪器设备和材料 硬件:PC机 软件:Visual C+ 6.0四实验的内容1.二叉树类型定义以及各基本操作的简要描述;ADT BinaryTree 数据对象D:D是具有相同特性的数

2、据元素的集合.数据关系R:若D=,则R=,称BinaryTree为空二叉树;若D,则R=H,H是如下二元关系:(1) 在D中存在惟一的称为根的数据元素root,它在关系H下无前驱;(2) 若D-root,则存在D-root=D1,Dr,且D1Dr=;(3) 若D1,则D1中存在惟一的元素x1,H,且存在Dr上的关系HrH;H=,H1,Hr;(4) (D1,H1)是一棵符合本定义的二叉树,称为根的左子树,是一棵符合本定义的二叉树,称为根的右子树。基本操作P:InitBiTree(&T);操作结果:构造空二叉树T。DestroyBiTree(&T);初始条件:二叉树T存在。操作结果:销毁二叉树T。

3、CreateBiTree(&T,definition);初始条件:definition给出二叉树T的定义。操作结果:按definition构造二叉树T。ClearBiTree(&T);初始条件:二叉树T存在。操作结果:将二叉树T清为空树。BiTreeEmpty(T);初始条件:二叉树T存在。操作结果:若T为空二叉树,则返回TURE,否则FALSE。BiTreeDepth(T);初始条件:二叉树T存在。操作结果:返回T的深度。Root(T);初始条件:二叉树T存在。操作结果:返回T的根。Value(T,e);初始条件:二叉树T存在,e是T中的某个结点。操作结果:返回e的值。Assign(T,&e

4、,value); 初始条件:二叉树T存在,e是T中的某个结点。 操作结果:结点e赋值为value。Parent(T,e); 初始条件:二叉树T存在,e是T中的某个结点。操作结果:若e是T的非跟结点,则返回它的双亲,否则返回“空”。LeftChild(T,e);初始条件:二叉树T存在,e是T中的某个结点。操作结果:返回e的左孩子。若e无左孩子,则返回“空”。RightChild(T,e);初始条件:二叉树T存在,e是T中的某个结点。操作结果:返回e的右孩子。若e无右孩子,则返回“空”。LeftSibling(T,e);初始条件:二叉树T存在,e是T中的某个结点。操作结果:返回e的左兄弟。若e无左

5、孩子或无左兄弟,则返回“空”。RightSibling(T,e); 初始条件:二叉树T存在,e是T中的某个结点。操作结果:返回e的右兄弟。若e无右孩子或无右兄弟,则返回“空”。ADT BinaryTree2.存储结构:采用无头结点的链式存储结构实现3.源代码:头文件及存储结构:#include#include#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW 0#define MAXQSIZE 100 /最大队列长度typedef char TElemType; typedef struct BiTN

6、ode /二叉树结构体 TElemType data; struct BiTNode *lchild,*rchild;BiTNode,*BiTree;typedef BiTree QElemType;typedef struct QNode QElemType data; struct QNode *next; QNode, *QueuePtr; /结点结构体typedef struct QueuePtr front; QueuePtr rear; LinkQueue; /链队列结构体 算法设计:int InitQueue(LinkQueue &Q) /构造空队列 Q.front = Q.re

7、ar = (QueuePtr)malloc(sizeof(QNode); if(!Q.front) /存储分配失败 exit(OVERFLOW); Q.front-next = NULL; return OK; int EnQueue(LinkQueue &Q, QElemType e) /新元素入队尾 QueuePtr p; p = (QueuePtr)malloc(sizeof(QNode); if(!p) /存储分配失败 exit (OVERFLOW); p-data = e; p-next = NULL; Q.rear-next = p; Q.rear = p; return OK;

8、int DeQueue(LinkQueue &Q, QElemType &e) /删除队头元素 QueuePtr p; if(Q.front = Q.rear) /队列为空队 return ERROR; p = Q.front-next; e = p-data; Q.front-next = p-next; if(Q.rear = p) /判断删除队头元素后,队列是否为空队 Q.rear = Q.front; free(p); return OK; int QueueEmpty(LinkQueue Q) /判断队列是否为空队 if (Q.front = Q.rear) return TURE;

9、 else return FALSE;int InitBiTree(BiTree &T) / 构造空二叉树 T = NULL; return OK;int DestroyTree(BiTree &T) /销毁二叉树 if(!T) return ERROR; else DestroyTree(T-lchild); DestroyTree(T-rchild); free(T); T=NULL; return OK;void CreateBiTree(BiTree &T) /用先序遍历的方式构建二叉树,以表示空结点。 TElemType ch; scanf(%c,&ch); if(ch=) T=NU

10、LL; else if(!(T=(BiTree)malloc(sizeof(BiTNode) exit(OVERFLOW); /分配存储空间失败 T-data=ch; CreateBiTree(T-lchild); /构造左子树 CreateBiTree(T-rchild); /构造右子树 int ClearBiTree(BiTree &T) /清空二叉树函数 if(!T) return ERROR; else ClearBiTree(T-lchild); ClearBiTree(T-rchild); free(T); T=NULL; return OK; int BiTreeEmpty(Bi

11、Tree T) /判断二叉树是否为空 if(!T) return TURE; else return FALSE;int BiTreeDepth(BiTree T) /计算二叉树深度 int lcd,rcd; if(!T) return 0; lcd=BiTreeDepth(T-lchild); rcd=BiTreeDepth(T-rchild); return (lcdrcd?lcd:rcd)+1);TElemType Root(BiTree T) /判断二叉树是否空,若非空返回其根 if(BiTreeEmpty(T) return NULL; else return (T-data);TE

12、lemType Value(BiTree T,BiTree e) /返回e结点的值 return e-data;int Assign(BiTree T,BiTree &e,TElemType value) / 将value的值给结点e e-data=value; return OK;TElemType Parent(BiTree T,TElemType e)/返回双亲 LinkQueue q; QElemType a; if(T) InitQueue(q); EnQueue(q,T);/树根入队列 while(!QueueEmpty(q)/队不空 DeQueue (q, a);/出队,队列元素

13、赋给a if(a-lchild&a-lchild-data=e|a-rchild&a-rchild-data=e) /找到e return a-data; /返回双亲的值 else if(a-lchild) EnQueue(q,a-lchild);/入队列左孩子 if(a-rchild) EnQueue(q,a-rchild);/入队列右孩子 return NULL;BiTree Point(BiTree T,TElemType s)/返回二叉树T中指向元素值为S的结点指针 LinkQueue q; QElemType a; if(T) InitQueue(q); EnQueue(q,T); while(!QueueEmpty(q) DeQueue(q,a); if(a-data=s) return a; if(a-lchild) EnQueue(q,a-lchild); if(a-rchild) EnQueue(q,a-rchild);

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

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