
上海大学—数据结构实验
文章平均质量分 90
tbznl
这个作者很懒,什么都没留下…
展开
-
【史上最详细】数据结构实验——八个排序算法的实现与比较
八个排序算法的实现与比较实验1.1 实验内容所谓排序(Sorting),就是对数据元素集合建立某种有序排列的过程。排序在计算机软件系统设计中占有相当重要的地位,特别是在事务处理系统中,需要经常对有关的数据排序,以便提高检索等操作的效率。本实验将进行以下工作:1、用代码实现排序的8个排序算法(直接插入、希尔、冒泡、快速、简单选择、堆、二路归并、基数)。2、在众多排序方法中,简单地断言哪种方法最好是很困难的。应根据具体应用的需求综合考虑选择排序方法。所以将用不同的数据集(数据的不同规模、初原创 2023-11-07 17:31:04 · 1087 阅读 · 0 评论 -
数据结构实验——判断一棵二叉树是否是二叉排序树
true,如果当前所访问结点的左孩子指针不为空且flag为true,则继续访问其左子树,如果其双亲的数据域的值k比当前结点的数据大,就说明其中序序列不是有序的,flag被赋值false,同理如果当前所访问结点的右孩子指针不为空且flag为true,则继续访问其右子树。在二叉树类中声明并定义CreatBinaryTree()函数,调用该函数时输入结点p,输入的值为-1时表示该结点为空,若不是-1,则通过递归创建p的左右孩子结点。原创 2023-10-17 13:18:11 · 944 阅读 · 0 评论 -
数据结构实验——二叉排序树的插入和删除算法
创建新的BinTreeNode类的指针p指向新插入的结点,如果通过IsEmpty()判断目前是空二叉树,则新插入的结点就为根结点,如果不是则判断e与插入结点处双亲结点的data大小,如果e较小,则将结点指针赋给f的左孩子指针域,否则赋给f的右孩子指针域。因此,在插入之前,首先在二叉排序树中检查待插入的数据元素,如果查找成功,说明树中已经存在这个数据元素,则不再插入:如果查找不成功,说明树中不存在关键字等于给定值的数据元素。①选择功能2,删除有左右孩子的结点87,并显示查找该元素的过程(前驱为81)原创 2023-10-17 13:14:48 · 219 阅读 · 0 评论 -
数据结构实验——实现插值和斐波那契查找
斐波那契数列的定义为:1,1,2,3,5,8,13,…可以看到在这种数据的情况下,折半查找和斐波那契查找的比较次数相差不大,与折半查找相比,斐波那契查找的优点是它只涉及加法和减法运算,而不用除法,而除法比加减法要占用更多的时间,因此,斐波那契查找的运行时间理论上比折半查找小。②若elem[mid]<key,则说明如果数据表中存在要找的数据元素,该数据元素一定在mid的右侧,可把查找区间缩小到数据表的后半部分,得到的子表的长度正好为f(k-2)-1,再继续进行斐波那契查找。原创 2023-10-12 14:23:55 · 131 阅读 · 0 评论 -
数据结构实验——求两点之间最大噪声值最小值
求两点之间最大噪声值最小值。原创 2023-10-11 13:11:38 · 197 阅读 · 0 评论 -
数据结构实验——用邻接表存储,并按Kruskal算法求最小生成树
Tn-1},以后每一步向F中加入一条边(v, u),它应是所依附的两个顶点v和u分别在森林F的两棵不同的树上的所有边中具有最小权值的边。由于这条边的加入,使F中的某两棵树合并为一棵,树的棵数减一。5)将边(v,u)加入到最小生成树T中,同时将这两个顶点所在的连通分量合并成一个连通分量(即并查集中的相应两个子集合并成一个子集),继续步骤2)。1)初始化,在并查集中,连通网络的每一个顶点独立成一个等价类,连通网络的所有的边建立最小堆,最小生成树T中没有任何边,T中边的条数计数器i为0。原创 2023-10-10 13:49:28 · 759 阅读 · 0 评论 -
数据结构实验——用邻接矩阵存储,并按Prim算法求最小生成树实验
第二个for循环是个二重嵌套循环,外循环执行n-1次把n-1个顶点加入U中,对每加入一个顶点到U,有两个并列的for循环分别实现查找具有最小权值的边和修改辅助数组closearc[]。将closearc[v].lowweight改为0,表示顶点i已加入顶点集U中,并将边(closearc[v].ncarvertex,v)加入生成树T的边集合。对图G(V,E)设置集合S,存放已访问的顶点,然后每次从集合V-S中选择与集合S的最短距离最小的一个顶点(记为u),访问并加入集合S。函数,生成最小生成树。原创 2023-10-10 13:44:49 · 1313 阅读 · 1 评论