数据结构2018
文章平均质量分 50
Hodge_Z
newer
展开
-
数据结构十种排序算法(动图演示)
0,算法概述0.1算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 0.2算法复杂度0.3相关概念稳定:...转载 2018-12-01 14:40:14 · 2998 阅读 · 2 评论 -
数据结构——二叉树:二叉搜索树(C++)
内容概要:二叉搜索树的相关概念 实现二叉搜索树时注意事项 code:Node类,BST类,测试函数一、相关概念二叉搜索树(Binary Search Tree,简称BST):也称二叉查找树,二叉排序树等。特点:对于其中的任一节点,设其值为k,该节点左子树任一节点的值都小于k;该节点右子树任一节点的值都大于或等于k(也有版本认为BST中不存在键值相等的节点)。 节点的前驱:是该节点的...原创 2018-12-30 14:57:28 · 353 阅读 · 0 评论 -
数据结构——二叉树:基本二叉树(C++)
内容概要:二叉树相关概念 简单二叉树模板类的实现:二叉树的遍历、计算高度、计算节点数目 注意事项一、二叉树相关概念:第一部分:节点(node),根节点(root),左子树(left subtree),右子树(right suntree),子节点(children),父节点(parent);每一个非空二叉树有一个根节点和左右子树。 路径(path),路径的长度(length),祖...原创 2018-12-24 12:39:15 · 298 阅读 · 0 评论 -
数据结构——线性表:顺序栈,链式栈(C++)
内容概要:栈的基本概念及注意事项 顺序栈、链式栈的C++模板类的实现栈的基本概念及注意事项:栈(stack)是限定仅在一端进行插入或删除操作的线性表。 与顺序表和链表一样,栈分为顺序栈和链式栈。 栈顶(top)元素、入栈(push)、出栈(pop) 图示: 栈广泛应用于递归中,使用栈可以模拟递归。实现代码(测试...原创 2018-12-18 12:46:56 · 319 阅读 · 0 评论 -
数据结构——线性表:顺序表、单链表、双链表(C++)
内容概要:1.代码部分:线性表抽象类 顺序表类 单链表类 双链表类 主函数2.基本概念及注意事项代码(测试环境VS2017)://线性表ADT类的定义:ADT_List.htemplate <typename E>class List{private: void operator=(const List&) {} List(const L...原创 2018-12-18 00:23:41 · 424 阅读 · 0 评论 -
T:B数的表示及其基本操作的实现(C++)
习题内容:1.掌握B树的存贮结构。2.实现B树中关键字值的插入及删除操作。 B树的定义:B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母M表示阶数。当M取2时,就是我们常见的二叉搜索树。一颗M阶的B树定义如下:1)每个结点最多有M-1个关键字。2)根结点最少可以只有1个关键字。3)非根...原创 2018-12-17 16:05:44 · 352 阅读 · 0 评论 -
T:求金属熔化所需要的时间(C++)
习题内容:求金属融化所需要的时间[1].在N × N的格子上放置着形状不规则的金属(5≤N≤1000)。金属为1×1格子的整数倍组成的不规则形状; 金属有可能中空,这样在开始的时刻中空的方格不会立即充满液体; 当中空的格子有缺口时,液体可以立即进入到中空的地方。[2].T=0时刻从格子的最外围开始注入某种可以融化金属的液体。液体扩散填充的速度不计,例如在T=0时刻液体充满浅蓝...原创 2018-12-17 15:41:53 · 862 阅读 · 0 评论 -
T:电路板导通问题(C++)
问题描述:有一块布满器件的电路板,器件共N行M列。每个器件只有两种状态,经一次激光照射后状态反转。初始时,器件的状态随机。激光的位置在每列器件的最上方,这意味着照射一次,当前列中的所有器件的状态全部反转。(激光可以多次照射同一列。)当一行中的所有器件全为1时,本行处于导通状态。给定一块电路板,并指定激光照射次数,求最大导通行数。限定:3≤行数N≤100,3≤列数M≤20,1≤激...原创 2018-12-17 15:29:33 · 850 阅读 · 1 评论 -
六种内排序比较次数、交换次数比较
内容:随机生成1万个数据保存在文件中,使用六个内排序算法,分别对这个文件进行排序,统计排序过程中各算法的比较次数及数据交换次序。列表输出。 代码: /*测试环境:VS2017*/#include<iostream>#include<fstream>#include<stdlib.h>#include<iomanip>using ...原创 2018-12-17 15:17:17 · 10016 阅读 · 0 评论 -
数据结构——线性表:顺序队列、链式队列(C++)
内容概要:队列的相关概念 注意事项 code:队列抽象类、顺序队列类、链式队列类一、队列的相关概念队列是一种受限制的线性表,其特点是“先进先出”(FIFO)。 队列元素只能从队尾插入(入队操作:enqueue)、从队首删除(出队操作:dequeue)。 顺序队列用数组/顺序表实现,队列元素个数受限,为提高效率,循环使用数组/顺序表。 链式队列用链表...原创 2018-12-20 00:23:10 · 313 阅读 · 0 评论 -
C++ 二叉树的实现、基本操作以及指针使用注意事项(转自博客)
内容:模板实现简单的二叉树 二叉树的前序,中序,后序遍历 统计二叉树结点的个数和深度 二叉树的销毁操作 具体的实现过程及注意事项见代码部分; #include <iostream>using namespace std;//*************************************************************...转载 2018-11-22 16:44:55 · 618 阅读 · 0 评论 -
B树与B+树解析
简介:本文主要介绍了B树和B +树的插入,删除操作。B树1. B树的定义B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母M表示阶数。当M取2时,就是我们常见的二叉搜索树。一颗M阶的B树定义如下:1)每个结点最多有M-1个关键字。2)根结点最少可以只有1个关键字。3)非根结点至少有Math.ce...转载 2018-12-01 14:41:28 · 440 阅读 · 0 评论 -
Huffman树的实现C++
具体功能:将给定字符文件编码,生成编码,输出每个字符出现的次数和编码; 将给定编码文件译码,生成字符,输出编码及其对应字符。文件说明:文件名为inputfile1.txt的文件保存的是一段英文短文; 文件名为inputfile2.txt的文件保存01形式的编码段; 文件名为outputfile1.txt的文件保存各字符的出现次数和对应的编码; 文件名为outputfile2.t...原创 2018-11-22 16:54:02 · 465 阅读 · 0 评论 -
数据结构——线性表:字典(C++)
内容概要:字典的相关概念 注意事项 简单的字典实现一、字典的相关概念字典(dictionary)是在数据库中具有存储、查询和删除记录的功能的线性表。 数据库中的记录一般是靠关键码(key)描述的,类似人们的ID号码。 关键码应当具有可比性(comparable)。二、注意事项由于关键码类型非常多,不能编写出通用的字典。 关键码不是记录的类的基本属性,也不是类中任意的域,它...原创 2018-12-25 16:13:25 · 3828 阅读 · 0 评论