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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构二叉排序树课程设计报告.docx

1、数据结构二叉排序树课程设计报告课 程 设计 报 告-数据结构题目:二叉排序树 姓 名: 学 号: 专 业: 班 级: 指导老师: 年 月日目录一、课程设计简介 3二、原理分析及流程 32.1、原理分析。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。 2.2、流程图.。.。.。.。.。.。.。.。.。.。.。.。.。4 、an()函数.。.。.。.。.。.。.。.。.。.。.。.。.。 、创建.。.。.。.。.。.。.。.。.。.。.。 3、插入。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。. 、查找。.。.。.。.。.。.。.。.。.。.。.。.。.。

2、.。.。.。.。.。.6、中序遍历输出三、算法描述 .1、存储结构8.2、插入算法34、删除算法 10四、小结与体会2五、程序执行过程 13 5.1、创建二叉排序树并中序输出。.。.。.。.。.。.。.。.。1 5。2、插入并中序输出.。.。.。.。.。.。.。.。.。.。.。.。3 3、查找.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.4一、课程设计简介 1、题目:二叉排序树相关操作、创建二叉排序树;、插入给定值;3、查找给定值; 4、删除给定值的结点。 1。、报告要求:、封面; 2、题目与流程图或模块图;3、程序清单和运行结果; 4、小结(收获和体会);5、装订成册。 1。

3、3、目的: 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力.提高学生适应实际,实践编程的能力。二、原理分析及流程 2.1、原理分析:根据题目要求,要实现这些功能,就必须创建一个菜单.这个菜单设置在mai()函数里面,然后使用whle()。.switch()语句进行循环调用相关函数,以达到实现相关功能的目的。 。2、流程图: 、mai()函数: 2、创建: 3、插入: Y N Y 、查找:N Y N 5、中序遍历输出:三、算法描述 3。、存储结构定义一个链表式的二叉排序树,用链表的方式构造结点,存储二叉排序树中的结点

4、、结点类型和指针类型如下: icludestdi.h efienull0 typeef nt keytp; typd tuct node keytye ey; stuce *lcld,rchild; bstnode,*stree; 3、插入算法 在二叉排序树中插入一个新节点,首先要查找该节点在二叉排序树中是否已经存在。若二叉排序树中不存在关键字等于x的节点,则插入。 将一个关键字值为x的节点s插入到二叉排序树中,可以用下面的方法: (1)若二叉排序树为空,则关键字为x的节点成为二叉排序树的根 ()若二叉排序树非空,则将x与二叉排序树根进行比较,如果x的值等于根节点关键值,则停止插入;如果的根节

5、点值小于根节点关键值,则将x插入左子树;如果x的值大于根节点关键字的值,则将x插入右子树。在左右两个子树的插入方法与整个二叉排序树相同. 算法如下:odnser(tree t,kype ) bstre s;i(t=nl) s=(bstre)mlo(szof(stde));sey=x; lcild=nl; -rh=null;*t=s; ls if(cld),x); el i(t)ke) iert(((t)rchild),x); 3。、查找算法 (1)若二叉排序树不为空,将根结点的关键字与待查关键字进行比较,若相等,则查找成功;若根节点关键字大于待查值,则进入左子树重复次步骤,否则,进入右子树进行

6、此步骤;若在查找过程中遇到二叉排序树的叶子节点时,还没有找到待查节点,则查找不成功。 (2)否则,查找失败,返回ul. 算法如下:btreesarh(bstre,eytypex) bstre p; p=t;(!nul) if (x=pky) retun ey; else if(xpky) rtur search(p-chil,); elseeurn search(pcil,x); ls printf( a no efoundn,x);etrn nl; 3.4、删除算法 在二叉排序树中删除节点,首先要确定被删除的节点是否在二叉排序树中。若不在,则不做任何操作;否则,假设要删除的节点为p,节点p的

7、父节点为r,并假设是的左孩子。根据被删除节点p有无孩子,删除部分可做以下中情况讨论: (1)若p为叶子节点,则可令其父节点r的左孩子指针域为空,直接将其删除。(2)若p节点只有右子树或左子树,则可以将p的左子树或右子树直接改为其双亲节点r的左子树。()若既有左子树又有右子树;将节点s为p的中序前驱。首先找到p的中序前驱节点s,然后用节点s的值代替节点p的值,再将节点s删除,节点s的原左子树改为的双亲节点q的右子树。 算法如下:bstree delete(bsree ,keytype ) sreep,,r,s; p=t;r=null; wil(p) i(x=pkey)break; rp; i(x

8、key) p=plchild; else p=p-rcd; i(p=nul) pnf(”%s ot exst!n”,x);eur; f((-lhld=null)|(prcil=ull)) f(r=null) if(plhild=null) t=prcild; else t=lchild; elei(child=null) if(rlchil=p) -lchld=-rchld; lse rrchidpchild; else if(rlchil=p) rlchilplchild; else rlchld=plhil; free(p); ee q=p; s-cld;hile(s-hild) q=s;

9、scld; if(=p) chi=shi;ele pys-key; fre(s); retrn t; 四、小结与体会 经过一个多星期来夜以继日的努力,终于把课程设计-二叉排序树的相关算法全部完成!在编写程序过程中,让我对二叉排序树的创建、插入、查找、删除算法有了较系统的认识,也发现了一些以前纸上谈兵时的思想误区。比如实现插入功能时,从根节点开始比较;当实现删除功能时,如果待删除结点p左、右子树齐全,首先找到的中序前驱节点s(p的中序前驱),然后用节点s的值代替节点p的值,再将节点删除,节点s的原左子树改为s的双亲节点q的右子树。实现中序遍历功能时,采用递归思想。.。这是第一次关于编写程序的课程

10、设计。虽然上机安排只有两天时间,可却并不像平时上机实验一样,离开了机房就不用再对着电脑屏幕编写代码,更多的工作实在离开机房后完成的。一遍一遍地按调试程序,err从几十个减少到几个,再到只剩几个warrig,当按下tr+9,那精心设计的“菜单”出现在屏幕上时,那一刻的心情无以言表!涌上心头的除了自豪感、成就感之外,还有对编程工作之辛苦的慨叹!因为自己专业将来的方向与这有关,不免让我考虑起毕业后的发展方向。如果朝这方面发展的话,我是否可以胜任这样的工作?如果不是,又该选择什么?五、程序执行过程 .1、创建二叉排序树并中序输出 .2插入并中序输出 3、查找 .4、删除并中序输出 六、程序清单nclu

11、d sdo。hdefine nl tyedef it keytyp;typeefstutnode etype ke; tuct node *lcild,chid;btnod,*bstee;vd inset(btee t,keyyp x);btee earch(bsree ,keytypx);idsplay(sree );void eate(bstree*t) keytpe x; *t=nul; scanf(d,x); while(!=1) inset(t,x);canf(”d,x); vod inset(bsreet,ketype x) tree ; f(*=null) s=(bree)mal

12、o(sizef(sod));s-ke=x; s-hil=nl; child=nll; *s; esei(xey) nsert((*t)child),x); els if(x(t)-key)inser(&((*t)rhil),x);breeeach(tee ,eytyex) bste p; p; if(!=null) if(x=ke) ru pkey; le if(xpkey) reun sea(p-lchild,x);ese retrn search(p-rcid,x); else pritf( can ot efond,); urn nul;bstre dlte(bstee ,ketype

13、x) bstree ,q,r,s; =t; r=nll; hile(p) if(x=p-ke) bre; r=p; if(xey) p=plchild; else p=prcild; if(p=ull) prinf(d is ntxist!”,);retn ; if(plchd=nul)|(-rchild=null)) if(r=null) i(p-chil=null) t=p-rchild; els t=plhild; else if(lchild=nll) i(r-lchid=p) -lch-rcil; se r-rchld=pchld; elseif(child=p) lchild=pl

14、hild; else rhl=p-lhid; free(p); se p; s-id; while(s-rchld) q=s;rchld; if(=) -hild=schild; ele pkey=k; fe(s); rtun t;void dsply(bee t) (!=nll) dispay(tlchld);printf(”%5d,k); iplay(trhid); void main(vid) bsree ,b; ni=1,j; keytype x; hile(i) pritf(n* * * * * * * * * *n”);pntf(”n* MENU OF BREE n”);rintf

15、(”n 。create inst n); pntf(n 3。search 。le n); prinf(n* 5。eit *n”);printf(n* * * *); pritf(” wao you wanto d?:”);canf(d,&); wtch(j) ca 1: rntf(iubsesalus,en ih 1:n);reate(&t); rint(bstrees root s%d,tey);dspay(t);brek; cse 2:rintf(iut the nset alu:);ca(”,&);inr(&t,);dispay(t);break; cas 3: pritf(”nputthe earc value:);canf(d,x);print(rsulti: %,sech(t,);break; case 4:rintf(nput thedete value:”);scanf(d,); dee(t,x);dply(t);beak; case 5: i=0;brak; clrcr();

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

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