二叉排序树的基本操作njzch8wt.docVIP

  • 9
  • 0
  • 约7.97千字
  • 约 8页
  • 2018-10-16 发布于湖北
  • 举报
二叉排序树的基本操作njzch8wt

《数据结构》课程设计 专 业:XXX 班 级:XXX 学 号:XXX 姓 名:XXX 日期: 年 月 日 需求分析 动态查找表在查找过程中可改变表的状态,即可插入或删除数据,它适合用在表的内容要经常变化的情况下,如飞机航班的旅客信息表。 概要设计 主界面设计 为了实现对二叉排序树各功能的管理,设计一个多菜单的菜单,方便用户使用本系统。本系统主控菜单运行界面如下图所示。 存储结构设计 本系统选取二叉链表作为二叉排序树的存储结构 系统功能设计 本系统设置了5个资功能的设计,如下: 建立二叉排序树 可以一次输入多个数据,建立二叉排序树。但是只能建立一次,一旦选择输入后就会被锁定,不能再次输入。通过CreateBST(BiTree T)函数实现。 查找需求的数据 输入一个数据进行查找,用SearchBST (BiTree T, KeyType key)函数来实现 插入一个数据 根据给定的数据进行查找,若没有,则插入,用InsertBST(BiTree T, TElemType e)函数来实现 删除数据 选择一个数据进行删除操作DeleteBST(BiTree T, KeyType key) 遍历输出二叉排序树 通过三种顺序进行遍历,可以选择先,中,后序的方式,PreOrderTraverse(BiTree T),InOrderTraverse(BiTree T), PostOrderTraverse(BiTree T) 详细设计 数据类型定义 本系统采用链式结构存储信息。结点定义如下: typedef struct{ KeyType key; }TElemType; 系统主要子函数详细设计 建立二叉排序树: Status CreateBST(BiTree T){ int k; TElemType a[10]; cout请输入要输入的个数:endl; cink; cout请依次输入这些数,回车结束:endl; for(int i=0;ik;i++){ cina[i].key; } InitDSTable(T); for(int m=0;mk;m++){ InsertBST(T, a[m]); } return TRUE; } 遍历输出: void Visit(TElemType a){ cout a.key; } void PreOrderTraverse(BiTree T) { if (T) { Visit(T-data); PreOrderTraverse(T-lchild); PreOrderTraverse(T-rchild); } } void InOrderTraverse(BiTree T) { if (T) { InOrderTraverse(T-lchild); Visit(T-data); InOrderTraverse(T-rchild); } } void PostOrderTraverse(BiTree T) { if (T) { PostOrderTraverse(T-lchild); PostOrderTraverse(T-rchild); Visit(T-data); } } 测试分析 在建立二叉排序树上,应该输入一次,这样才能有序有效,故,采用一开即闭的操作 输入时,应该先给出循环次数,这样便于操作 进行2至5的操作时,必须先建立二叉排序树 使用说明 本程序执行文件为“test.exe”。 进入本系统之后,随即显示系统主菜单。用户可以键入对应功能的数字选项,执行对应的功能 本程序没有直接修改的功能,可以通过查找,删除,插入完成此功能 根据提示进行各项操作 测试结果 在主菜单下,用户输入1并回车,然后按照提示建立二叉排序树,运行结果如下图: 在主菜单下,用户输入2并回车,然后按照提示查询数据,运行结果如下图: 在主菜单下,用户输入3并回车,然后按照提示插入数据,运行结果如下图: 在主菜单下,用户输入4并回车,然后按照提示删除数据,运行结果如下图: 在主菜单下,用户输入5并回车,然后按照提示遍历输出,运行结果如下图: 在主菜单下,用户输入0并回车,然后按照提示进行退出,运行结果如下图: 代码: #includeiostream #includestdlib.h using namespace std; #define FALSE 0 #define TRUE 1 #define NU

文档评论(0)

1亿VIP精品文档

相关文档