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

上传人:scccc 文档编号:12980145 上传时间:2021-12-09 格式:DOCX 页数:11 大小:41.75KB
返回 下载 相关 举报
数据结构课程设计二叉排序树的实现.docx_第1页
第1页 / 共11页
数据结构课程设计二叉排序树的实现.docx_第2页
第2页 / 共11页
数据结构课程设计二叉排序树的实现.docx_第3页
第3页 / 共11页
数据结构课程设计二叉排序树的实现.docx_第4页
第4页 / 共11页
数据结构课程设计二叉排序树的实现.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《数据结构课程设计二叉排序树的实现.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计二叉排序树的实现.docx(11页珍藏版)》请在三一文库上搜索。

1、数据结构课程设计数据结构课程设计一、引言数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间 的桥梁。该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程 有操作系统、编译原理、数据库原理、软件工程等。通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步 培养良好的程序设计能力和解决实际问题的能力。数据结构是计算机科学与技术专业的一门核心专业基础课程,在该专业的课程 体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着 极为重要的作用。学习数据结构的最终目的是为了获得求解问题的能力。对于现实 世界中

2、的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部 用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试, 最后获得问题的解答。实习课程是为了加强编程能力的培养,鼓励学生使用新兴的编程语言。相信通 过数据结构课程实践,无论是理论知识,还是实践动手能力,我们都会有不同程度 上的提高。二、课程设计目的本课程是数据结构课程的实践环节。主要目的在于加强学生在课程中学习的相关算法和这些方法的具体应用,使学生进一步掌握在C+或其他语言中应用这些算法的能力。通过课程设计题目的练习,强化学生对所学知识的掌握及对问题分析和 任务定义的理解。三、内容设计要求二叉排序树的实现:用顺

3、序和二叉链表作存储结构1)以回车(,n?)为输入结束标志,输入数列L,生成一棵二叉排序树T;2)对二叉排序树T作中序遍历,输出结果;3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍 历(执行操作2);否则输出信息 无x”。(一)问题分析和任务定义对问题的描述应避开具体的算法和涉及的数据结构,它是对要完成的任务作出 明确的回答,强调的是做什么,而不是怎么做。(二)详细的设计和编码算法的具体描述和代码的书写。(三)上机调试源程序的输入和代码的调试。要求:设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、 规模较大的问题,通过分析、设计、编码、调试等各环节的训

4、练,深刻理解、牢固 的掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。四、源代码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->

5、; 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", &

6、amp;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*/(i

7、f(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

8、;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(&

9、quot;中序遍历输出序列为:");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,-

10、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);s

11、canf("%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("中序遍历输出序列为:&quo

12、t;);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

13、 cont inueM2、用顺序存储结构实现:六、总结与体会通过一周的课程设计,对计算机的应用,数据结构的作用以及C+勺使用都有了 更深的了解。在理论学习和上机实践的各个环节中,通过白主学习和请教老师,我 收获了不少。当然也遇到不少的问题,也正是因为这些问题引发的思考给我带了收 获。从当初不喜欢上机写程序到现在能主动写程序,从当初拿着程序不知如何下手 到现在知道如何分析问题,如何用专业知识解决实际问题的转变,我发现无论是专 业知识还是动手能力,白己都有很大程度的提高。通过课程设计题目的练习,强化 学生对所学知识的掌握及对问题分析和任务定义的理解。在这段时间里,我遇到过的问题主要就是 C语言和C+裙言有些混淆,一些用法 记不太清楚。在老师的指导帮助下,同学们课余时间的讨论中,这些问题都一一得 到了解决。在程序的调试能力上,无形中得到了许多的提高。例如:头文件的使用, 变量和数组的范围问题,定义变量时出现的问题等等。在实际的上机操作过程中,不仅是让我们了解数据结构的理论知识,更重要的 是培养解决实际问题的能力,所以相信通过此次实习可以提高我们分析设计能力和 编程能力,为后续课程的学习及实践打下良好的基础。第11页共12页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


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