1.题目
从空树出发构造一颗深度至少为 3(不包括失误结点)的 3 阶 B-树(又称 2-3 树)并 可以随时进行查找、插入、删除等操作。
要求:能够把构造和删除过程中的 B-树随时显示输出来,能给出查找是否成功的有 关信息。
2.软件功能
本软件作为数据结构中“B-树”的实现和演示软件,做到以下功能:
在软件运行时内部维护一个“B-树”的数据结构,可以对其进行增加、修改、删除 结点的操作,并在程序运行完成后自行释放
软件应实现一个 GUI(Graphic User Interface,图形用户界面)能够适时显示 B-树 经过改动后的结构
软件的 GUI 应提供给用户对于 B-树进行上述操作的接口(按钮、文本框),以便用 户输入。用户通过输入给出指令后,软件应执行用户的指令,并在对 B-树修改 后给出显示反馈
3.设计思想
本软件的体系结构为 MVC(Model-View-Controller)式,具体分“图形用户界面”和 “内部数据结构和算法”两部分。
3.1 图形用户界面的设计思想
图形用户界面包括 Model 和 Controller 的部分。
由于本软件基于 Qt 平台,因此可以利用 Qt 提供的图形用户界面库中的类(QWidget 等)来实现图形界面。
本软件设计时优先考虑 Microsoft Windows 等 PC 平台,故 GUI 的设计是窗口式的。 GUI 包括:
提供给用户的指令按钮
指令配套的参数的输入框
实时显示树结构的显示区域
对于 B-树的打印,由于显示空间有限而树的构造可以无限,故不采用直接的图形来 打印 B-树。Qt 提供了一个名叫 QTreeView 的控件,能以类 Windows 下文件目录结构的方 式展示树结构的内容,具有层次性强、延展性强、易于实现的特点,故采用 QTreeView 来显示树。
3.2 数据结构和算法的设计思想
本软件只涉及 B-树这一种数据结构。 在 B-树上,有“添加键值”、“删除键值”、“查找键值”三个算法。其中,添加键值算法用到了结点分裂算法、删除键值算法用到了结点合并以及关键字不足的结点的补全算 法。它们均为纯粹基于 B-树的算法。
除此之外,为使 GUI 能打印该 B-树,另有一个将 B-树映射为 QTreeView 下具有层次 的 QStandardItem(Model)对象的显示算法。
完整的源码和详细的文档,上传到了 WRITE-BUG技术共享平台 上,需要的请自取:
https://www.write-bug.com/article/3098.html