欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    数据结构课程设计二叉排序树的实现.docx

    • 资源ID:12980145       资源大小:41.75KB        全文页数:11页
    • 资源格式: DOCX        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计二叉排序树的实现.docx

    数据结构课程设计数据结构课程设计一、引言数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间 的桥梁。该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程 有操作系统、编译原理、数据库原理、软件工程等。通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步 培养良好的程序设计能力和解决实际问题的能力。数据结构是计算机科学与技术专业的一门核心专业基础课程,在该专业的课程 体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着 极为重要的作用。学习数据结构的最终目的是为了获得求解问题的能力。对于现实 世界中的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部 用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试, 最后获得问题的解答。实习课程是为了加强编程能力的培养,鼓励学生使用新兴的编程语言。相信通 过数据结构课程实践,无论是理论知识,还是实践动手能力,我们都会有不同程度 上的提高。二、课程设计目的本课程是数据结构课程的实践环节。主要目的在于加强学生在课程中学习的相关算法和这些方法的具体应用,使学生进一步掌握在C+或其他语言中应用这些算法的能力。通过课程设计题目的练习,强化学生对所学知识的掌握及对问题分析和 任务定义的理解。三、内容设计要求二叉排序树的实现:用顺序和二叉链表作存储结构1)以回车(,n?)为输入结束标志,输入数列L,生成一棵二叉排序树T;2)对二叉排序树T作中序遍历,输出结果;3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍 历(执行操作2);否则输出信息 无x”。(一)问题分析和任务定义对问题的描述应避开具体的算法和涉及的数据结构,它是对要完成的任务作出 明确的回答,强调的是做什么,而不是怎么做。(二)详细的设计和编码算法的具体描述和代码的书写。(三)上机调试源程序的输入和代码的调试。要求:设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、 规模较大的问题,通过分析、设计、编码、调试等各环节的训练,深刻理解、牢固 的掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。四、源代码1、用二叉链表存储结构实现#include <iostream> using namespace std; typedef int KeyType;typedef struct Node(KeyType key ;struct Node *lchild,*rchild;BSTNode, *BSTree;void InsertBST(BSTree *bst, KeyType key)( BSTree s;if (*bst = NULL)/*递归结束条件*/(s=new BSTNode;s-> key=key;s->lchild=NULL;s->rchild=NULL;*bst=s;elseif (key < (*bst)->key)InsertBST(&(*bst)->lchild), key);/* 将 s插入左子树 */ elseif (key > (*bst)->key)InsertBST(&(*bst)->rchild), key); /* 将 s插入右子树 */void CreateBST(BSTree *bst)(KeyType key;*bst=NULL;scanf("%d", &key);while (key!=0)(InsertBST(bst, key);scanf("%d”, &key);void InOrder(BSTree root) (if (root!=NULL)(InOrder(root->lchild);printf("%d ",root->key);InOrder(root->rchild);BSTNode * DelBST(BSTree T, KeyType x) (BSTNode *p, *f,*s ,*q;P=T;f=NULL;while(p)/*查找关键字为x的待删结点p*/(if(p->key=x) break;f=p; /*f指向p结点的双亲结点*/if(p->key>x)p=p->lchild;elsep=p->rchild;if(p=NULL)return T; /*若找不到,返回原来的二叉排序树 */ if(p->lchild=NULL) /*p 无左子树 */(if(f=NULL)T=p->rchild;elseif(f->lchild=p)f->lchild=p->rchild ;elsef->rchild=p->rchild ;delete p;else /*p有左子树*/(q=p;s=p->lchild;while(s->rchild) /*在p的左子树中查找最右下结点*/ ( q=s;s=s->rchild;if(q=p)q->lchild=s->lchild ;/*将 s 的左子树链到 q 上*/elseq->rchild=s->lchild;p->key=s->key;delete s;return T; void main()BSTree T;int x;BSTree result;printf("建立二叉排序树,请输入序列L:n");CreateBST(&T);printf("中序遍历输出序列为:");InOrder(T);cin>>x;result = DelBST(T,x);if (result != NULL)InOrder(result);elseprintf("无 xn");2、用顺序存储结构实现#include<iostream>using namespace std;typedef int KeyType;typedef struct NodeKeyType key;struct Node *next;BSTNode,*BSTree;int A40=(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;int j,i=0;void InsertBST(int A,KeyType key)( int j=0;while(Aj!=-1)if(key<Aj)j=2*j+1;elsej=2*j+2;Aj=key;void CreateBST(int A)int key;scanf("%d", &key);while (key!=-1)InsertBST(A,key);scanf("%d", &key);void Traverse(int A,int i)if(Ai!=-1)Traverse(A,2*i+1);cout<<Ai<<'t'Traverse(A,2*i+2);void DelBST(int A,KeyType x)for(i=0;i<40;i+)if(Ai=x)Ai=-1;void main()int x;/int key;printf("建立二叉排序树,请输入序列L:n");CreateBST(A);printf("中序遍历输出序列为:");Traverse(A,0);cin>>x;if(Ai!=-1)DelBST(A,x);printf("删除x后中序遍历输出序列为:");Traverse(A,0);elseprintf("无 Xn");五、测试分析程序运行:1、用二叉链表存储结构实现:。厂 *C: YDoGUKiBnts axid SiattratorDebux2« exoH 12 7 2t 13 t 2 19 H皿序遍历输出序为=2 5 6 7 12 13 14 19 26 5Q 6 7 12 13 14 19 26 Press an ke</ to cont inueM2、用顺序存储结构实现:六、总结与体会通过一周的课程设计,对计算机的应用,数据结构的作用以及C+勺使用都有了 更深的了解。在理论学习和上机实践的各个环节中,通过白主学习和请教老师,我 收获了不少。当然也遇到不少的问题,也正是因为这些问题引发的思考给我带了收 获。从当初不喜欢上机写程序到现在能主动写程序,从当初拿着程序不知如何下手 到现在知道如何分析问题,如何用专业知识解决实际问题的转变,我发现无论是专 业知识还是动手能力,白己都有很大程度的提高。通过课程设计题目的练习,强化 学生对所学知识的掌握及对问题分析和任务定义的理解。在这段时间里,我遇到过的问题主要就是 C语言和C+裙言有些混淆,一些用法 记不太清楚。在老师的指导帮助下,同学们课余时间的讨论中,这些问题都一一得 到了解决。在程序的调试能力上,无形中得到了许多的提高。例如:头文件的使用, 变量和数组的范围问题,定义变量时出现的问题等等。在实际的上机操作过程中,不仅是让我们了解数据结构的理论知识,更重要的 是培养解决实际问题的能力,所以相信通过此次实习可以提高我们分析设计能力和 编程能力,为后续课程的学习及实践打下良好的基础。第11页共12页

    注意事项

    本文(数据结构课程设计二叉排序树的实现.docx)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开