树形组织等价类.docxVIP

  • 4
  • 0
  • 约1.48万字
  • 约 27页
  • 2017-10-03 发布于重庆
  • 举报
树形组织等价类

数据结构课程设计报告设计题目:树形组织等价类日期: 12 年 3 月日树形组织等价类(find,union)目录1绪论32 设计思想和主要功能33概要设计43.1概要设计43.2设计环境63.3函数简单介绍64操作讲解65详细设计的介绍116收获与体会207改进说明201 绪论我做的课程设计题目是树形组织等价类,编译环境是QT,简单的介绍一下Qt,Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。Qt也是流行的Linux桌面环境KDE 的基础。 基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但Qt具有优良的跨平台特性、面向对象 、丰富的API、大量的开发文档等优点。课程设计的背景大二上学期开始学习《数据结构》,接触到了许多的经典的算法,以及一门新的语言C++,为了进一步理解算法和C++语言,利用《数据结构》上的算法编写一个简单的图形界面化的树形组织等价类。通过该课程设计,使我们进一步的掌握C++语言基本的知识和一些基本程序的设计技巧以及编程时应该注意的问题。提高我们的综合编程能力与程序调试能力,掌握算法的核心问题。课程设计的主要内容及要求 有N个元素从1到n编号,最开始每个元素在各自的类中,把每个类描述成一棵树,然后执行一系列的Find和Union操作。操作Find(e)返回元素e的所在类的唯一特征,而Union(a,b)用来合并包含a和b的类。2设计的思想和主要功能算法思想和方法合并问题的解决方案是使用模拟指针来解决,这里采用链表的方法来描述树。每个节点必须有一个parent域,但不一定有children域,要求能直接访问每个元素。合并时使用的原则:【重量原则】若树的i节点少于树的j节点数,则将j作为i的父节点,否则,将i作为j的父节点。【高度原则】若树i的高度少于树j的高度,则将j作为i的父节点,否则将i作为j的父节点。主要功能简介当用户点击ADD按钮时可以输入N(0N100)个数之后会自动生成N棵树,每棵树里面只含有一个节点,并且该节点作为该树的标识。然后用户开始进行合并操作,用户只可以选择俩个数据,选择的两个数据在画板上会出现颜色的变化,使用户及时了解到选择了哪个数据。当多余或者少于两个数据进行合并时,程序会提示错误。用户也可以输入数据进行合并。当合并后,树形的等价类的面板会立即做出反映,及时画出等价类树的变化。3概要设计3.1概要设计 该树形组织等价类的设计的主要样式可以由下图展现出来:程序设计流程: 是 否3.2设计环境为了锻炼C++,一开始使用的是VC6.0,但是随后发现一个更好用的编译环境Qt,Qt的模块化和移植性都很好。Qt目前的中文资料很少,但是它自带了很多的Demo,里面几乎涵盖了所有类的使用方法。所以说Qt上手还是蛮快的。最终我用Qt做成了目前的课程设计题目。3.3函数的简单介绍一共写了四个类,Left类,主要负责左侧面面板的设计;mainWindow类,主要负责整体的布局设计;painting类,主要负责画板的设计,各个树形的绘图;4操作讲解1.Windows下双击work.exe文件,打开程序;出现见面如图一:图形一2.当用户点击ADD按钮时可以输入N(0N100)个数之后会自动生成N棵树,每棵树里面只含有一个节点,并且该节点作为该树的标识。Root那一列数字表示的是该类的根节点。例如图形二(N=10);图形二3.选择俩个元素,例如8和9。8和9的图形会变成绿色,表示目前选择的是8和9.如图形三:图形三4.当用户点击Union按钮时所选择的两个元素合并为一个类。并且左侧原先选择的类会消失,形成一个新的类。如图形四:图形四5.几张效果图片4详细设计的介绍界面的设计虽然可以拖拽出来,但为了锻炼自己,界面代码全部手工输入,也正是这样,我从中也学到了很多的编程技巧以及方法。Left类里面包含了绝大部分的算法设计,以及很多的信号与槽的连接,它是最主要的一个类;/*左侧面板的设计left类*/4.1构造函数:里面包括一些数组的初始化和函数的调用; 以及整体的布局,按钮的位置,信号与槽的连接;Left::Left(QWidget*parent):QWidget(parent)/*构造函数,里面包括一些数组的初始化和函数的调用;以及整体

文档评论(0)

1亿VIP精品文档

相关文档