ImageVerifierCode 换一换
你正在下载:

实验6.docx

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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(实验6.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验6.docx

1、实验6塔里木大学实验报告课程名称:数据结构任课教师:化希耀机 房:逸209计算机编号:22实验日期:2014-10-22实验成绩:实验班级:计算机17-6学生姓名:崔顺林实验名称:实验6 树的操作实验目的:一、 实验内容:#include #include #define MAXSIZE 100#define NULL 0#define OK 1#define ERROR 0typedef int Status;typedef char ElemType;typedef struct Node ElemType data; struct Node *lchild,*rchild;BiTNode

2、,*BiTree,*QElemType,*SElemType;typedef struct ElemType dataMaxSize; int front,rear; /队首和队尾指针 SqQueue;void InitQueue(SqQueue *&q) /初始化队列 q=(SqQueue *)malloc (sizeof(SqQueue); q-front=q-rear=0;void DestroyQueue(SqQueue *&q) /销毁队列 free(q);bool QueueEmpty(SqQueue *q) /判断队列空 return(q-front=q-rear);bool e

3、nQueue(SqQueue *&q,ElemType e) /进队 if (q-rear+1)%MaxSize=q-front) /队满上溢出 return false; q-rear=(q-rear+1)%MaxSize; q-dataq-rear=e; return true;bool deQueue(SqQueue *&q,ElemType &e) /出队 if (q-front=q-rear) /队空下溢出 return false; q-front=(q-front+1)%MaxSize; e=q-dataq-front; return true;void InitBiTree(B

4、iTree *T) *T=NULL;void DestroyBiTree(BiTree *T) /*销毁二叉树*/ if(*T) if(*T)-lchild) DestroyBiTree(&(*T)-lchild); if(*T)-rchild) DestroyBiTree(&(*T)-rchild); free(*T); *T=NULL; void Visit(ElemType e) /*访问结点e*/ printf(%c,e);void PreOrder(BiTree T) /*先序遍历二叉树*/ if(T) Visit(T-data); PreOrder(T-lchild); PreOr

5、der(T-rchild); void InOrder(BiTree T) /*中序遍历二叉树*/ if(T) InOrder(T-lchild); Visit(T-data); InOrder(T-rchild); void PostOrder(BiTree T) /*后序遍历二叉树*/ if(T) PostOrder(T-lchild); PostOrder(T-rchild); Visit(T-data); void CreateBiTree(BiTree *T) ElemType ch; scanf(%c,&ch); if(ch=#) *T=NULL; return; else *T=

6、(BiTree)malloc(sizeof(BiTNode); (*T)-data=ch; CreateBiTree(&(*T)-lchild); CreateBiTree(&(*T)-rchild); BiTree CreateBiTree() BiTree T; ElemType ch; scanf(%c,&ch); if(ch=#) return NULL; else T=(BiTree)malloc(sizeof(BiTNode); T-data=ch; T-lchild=CreateBiTree(); T-rchild=CreateBiTree(); return T; Status

7、 BiTreeEmpty(BiTree T) /*判断二叉树是否为空*/ if(T) return ERROR; else return OK;int BiTreeDepth(BiTree T) /*求二叉树的深度*/ int i,j; if(!T) return 0; if(T-lchild) i=BiTreeDepth(T-lchild); else i=0; if(T-rchild) j=BiTreeDepth(T-rchild); else j=0; return ij?i+1:j+1;void LevelOrder(BiTree T) /*层次遍历二叉树*/ SeqQueue q;

8、QElemType a; if(T) InitQueue(&q); EnterQueue(&q,T); while(!QueueEmpty(q) DeleteQueue(&q,&a); Visit(a-data); if(a-lchild!=NULL) EnterQueue(&q,a-lchild); if(a-rchild) EnterQueue(&q,a-rchild); printf(n); ElemType Parent(BiTree T,ElemType e) /*求e的双亲*/ SeqQueue q; QElemType a; if(T) InitQueue(&q); EnterQ

9、ueue(&q,T); while(!QueueEmpty(q) DeleteQueue(&q,&a); if(a-lchild&a-lchild-data=e|a-rchild&a-rchild-data=e) return a-data; else if(a-lchild) EnterQueue(&q,a-lchild); if(a-rchild) EnterQueue(&q,a-rchild); return NULL;BiTree Point(BiTree T,ElemType s) /*返回指向结点s的指针*/SeqQueue q;QElemType a;if(T) InitQueu

10、e(&q); EnterQueue(&q,T); while(!QueueEmpty(q) DeleteQueue(&q,&a); if(a-data=s) return a; if(a-lchild) EnterQueue(&q,a-lchild); if(a-rchild) EnterQueue(&q,a-rchild); return NULL;ElemType LeftChild(BiTree T,ElemType e) /*返回结点e的左孩子*/ QElemType a; if(T) a=Point(T,e); if(a&a-lchild) return a-lchild-data;

11、 return NULL;void InOrder1(BiTree T) /*中序遍历二叉树的非递归算法*/ SeqStack s; InitStack(&s); while(T|!StackEmpty(s) if(T) Push(&s,T); T=T-lchild; else Pop(&s,&T); Visit(T-data); T=T-rchild; printf(n);void PreOrder1(BiTree T) /*先序遍历二叉树的非递归算法*/ SeqStack s; InitStack(&s); while(T|!StackEmpty(s) if(T) Visit(T-data

12、); Push(&s,T); T=T-lchild; else Pop(&s,&T); T=T-rchild; printf(n);void PrintLeaf(BiTree T) /*输出叶子结点*/ if(T) if(!T-lchild&!T-rchild) printf(%c,T-data); PrintLeaf(T-lchild); PrintLeaf(T-rchild); int Leaf(BiTree T) /*统计叶子结点的个数*/int leafcount=0;if(!T) leafcount=0;else if(!T-lchild&!T-rchild) leafcount=1

13、;else leafcount=Leaf(T-lchild)+Leaf(T-rchild);return leafcount;void SwapChild(BiTree T) /*交换左右子树*/ BiTNode *p; if(T) if(T-lchild|T-rchild) p=T-lchild; T-lchild=T-rchild; T-rchild=p; SwapChild(T-lchild); SwapChild(T-rchild); int Menu()/*菜单函数*/int c,d;BiTree T;ElemType e;while(1)printf(*Menu*n);printf

14、(1.CreateBiTreen);printf(2.PreOrdern);printf(3.InOrdern);printf(4.PostOrdern);printf(5.LevelOrdern);printf(6.BiTreeDepthn);printf(7.Parentn);printf(8.LeftChildn);printf(9.InOrder1n);printf(10.PrintLeafn);printf(11.LeafCountn);printf(12.SwapChildn);printf(13.PreOrder1n);printf(15.Exitn);printf(*n);pr

15、intf(n);printf(n);printf(Please select a choice:);scanf(%d,&c);if(c15) printf(%c invalid choicen,c);exit(0);else switch(c) case 1: break; case 2: PreOrder(T); printf(n); break; case 3: InOrder(T); printf(n); break; case 4: PostOrder(T); printf(n); break; case 5: LevelOrder(T); break; case 6: printf(

16、The depth of the BiTree is:%d.n,BiTreeDepth(T); break; case 7: printf(please enter elem:); e=getchar(); scanf(%c,&e); printf(Parent is %cn,Parent(T,e); break; case 8: printf(please enter elem:); e=getchar(); scanf(%c,&e); printf(LeftChild is %cn,LeftChild(T,e); break; case 9: InOrder1(T); break; cas

17、e 10: PrintLeaf(T); printf(n); break; case 11: printf(%dn,Leaf(T); break; case 12: SwapChild(T); break; case 13: PreOrder1(T); break; case 15:exit(0); BiTree T;void main()clrscr();CreateBiTree(&T);Menu();实验分析及总结通过这次试验,我掌握了数据结构中有关于树的一些操作。知道了怎么样由C语言来实现对二叉树的操作,以及求二叉树的深度的操作,还有二叉树的叶子的个数,知道了基本的二叉树的前序,中序和后序。只要认真做好每一次实验,认真对待每一个实验中的困难,那么你会发现每个实验都是一个乐趣。

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

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