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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验报告2Word文件下载.docx

1、stackqueueusing namespace std;typedef int ElemType;typedef struct BiTreeNode ElemType data; struct BiTreeNode *lchild,*rchild;BiTNode,*BiTree;printlist(BiTree r) / 以广义表的形式输出二叉树 int i=1; if(r!=NULL) coutdata; printlist(r-lchild);rchild);) BiTree find(BiTree p,int pvalue) / 寻值 BiTree q; if(p=NULL) ret

2、urn(NULL); else if(p-data=pvalue) return(p); else q=find(p-lchild,pvalue); if(q=NULL) return(find(p-rchild,pvalue); else return(q);BiTree creat(BiTree &head) / 创建二叉树 int cvalue,i=1,pvalue,type; BiTree s,p,q;endl;请输入想要建立的二叉树的根结点: cincvalue; if(cvalue!=-1) head=(BiTree)malloc(sizeof(BiTNode); head-dat

3、a=cvalue;lchild=NULL;rchild=NULL; else do cout请输入第i+pvalue; if(pvalue! do couttype; while(type!=0&type!=1);请输入你想创建的结点: p=head; q=find(p,pvalue); if(q! s=(BiTree)malloc(sizeof(BiTNode); s- if(type=0) q-lchild=s; else q-rchild=s; else cout没有双亲结点! i-; while(pvalue!=-1); return(head);void LevelOrder(BiT

4、ree &T) /层序遍历 BiTree p=T; queue q; q.push(p); while(!q.empty() p=q.front();p-datalchild! q.push(p-rchild! void PreOrder(BiTree &T) /递归前序遍历 BiTNode *p=T; if(T! PreOrder(p-void InOrder(BiTree &T) /递归中序遍历 /递归中序遍历 InOrder(p-void PostOrder(BiTree &T) /递归后序遍历 PostOrder(p-void PreOrder2(BiTree &T) /非递归前序遍历

5、 stacklchild; p=s.top(); s.pop();rchild;void InOrder2(BiTree &T) /非递归中序遍历int main() BiTree p; creat(p);层序遍历: LevelOrder(p);递归前序遍历: PreOrder(p);递归中序遍历: InOrder(p);递归后序遍历: PostOrder(p);非递归前序遍历: PreOrder2(p);非递归中序遍历: InOrder2(p);用广义表显示的二叉树为: printlist(p); return 0;4、重要函数功能说明1、printlist(BiTree r) 以广义表的形

6、式输出二叉树函数2、BiTree find(BiTree p,int pvalue) 寻值函数3、BiTree creat(BiTree &head) 二叉树创建函数4、void LevelOrder(BiTree &T) 层序遍历函数5、void PreOrder(BiTree &T) 递归前序遍历函数6、void InOrder(BiTree &T) 递归中序遍历函数7、void PostOrder(BiTree &T) 递归后序遍历函数8、void PreOrder2(BiTree &T) 非递归前序遍历函数9、void InOrder2(BiTree &T) 非递归中序遍历函数5、程序

7、运行结果 建立的二叉树如下:六、实验中遇到的问题、解决及体会 1、刚开始,我不知道应该怎样建立二叉树,怎样将双亲与孩子联系起来,才能使程序运行时清晰明朗,不会使双亲与孩子的关系弄错,后来经过思考,我想到建立二叉树输入结点时可以提示要建立哪个双亲的孩子,从键盘输入双亲结点,就不会使其与孩子的关系弄错,同时选择0表示左孩子,1表示右孩子,这样一来如果之前,某个有左右孩子的双亲只建立了左孩子,而忘了建立右孩子,可以在后面进行补充,就使使用更方便了,并且最后输入-1,就表示二叉树建立结束。 比如:建立如上图所示二叉树,当我把1的左右孩子结点2、3建立后,我只建立了2的右孩子结点5,然后再建立了3的左右

8、孩子结点6、7,忘记了建立2的左孩子结点,但是我可以在最后建立2的左孩子结点4,这就使得程序更加方便灵活。2、老师要求用非递归算法编写前序遍历函数和中序遍历函数,还要以广义表的形式输出二叉树,起初我是完全没有想法的,于是我只好询问同学,同时还上网搜索相关信息,最终经过长时间的修改和多次调试,终于编写出了正确的程序可以实现老师要求的功能,这让我懂得在完全没有头绪的情况下,我们是可以寻求他人帮助和借助电脑等资源的。相关功能函数:程序运行部分截图:3、当我编写好能实现老师要求的所有功能的程序后,我多次运行程序,意外发现当我输入的结点值不是个位数时,遍历的结果很混乱,很不清楚,我意识到我遍历后的输出是直接一行连续输出所有结点,导致遍历结果不清楚,不知道到底是哪些结点值,于是我在每一次输出一个结点后,让其再输出一个空格,这样的话,遍历后输出的结果就很清晰明朗了。这让我懂得即使写好了程序,也要多次以不同的方式、形式运行程序,这样才能发现潜在的问题,对程序进行优化。修改前遍历函数中的输出都为“cout”,修改后遍历函数中的输出都为“cout”。建立的二叉树如下:修改前部分截图:修改后部分截图:

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

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