-
【数据结构】二叉树的递归与非递归创建和遍历
所属栏目:[安全] 日期:2020-12-15 热度:70
下面代码所用到的测试用例画成树的样子长这样: 创建树时给的是数组,用‘#’代表非法值,即该结点为空。 二叉树的递归实现: #pragma once#includeiostream#includequeueusing namespace std;templateclass Tstruct BinaryTreeNode{BinaryTreeNode(T value=[详细]
-
【数据结构】栈面试题---以O(1)时间复杂度求最小值
所属栏目:[安全] 日期:2020-12-15 热度:141
假设给出一组数字,我们需要在O(1)时间复杂度内完成对这组数字最小值的求解。 题目具体描述:定义一个栈,请在该类型中实现一个能够得到栈的最小值元素的min函数。在该栈中,调用min, push和push的时间复杂度都是O(1). 下边给出两种方法: 方法一:采用辅助[详细]
-
【数据结构】二叉树的线索化
所属栏目:[安全] 日期:2020-12-15 热度:110
现将二叉树的结点结构重新定义如下: leftchild lefttag _date righttag rightchild 其中:lefttag=0 时leftchild指向左子女; lefttag =1 时 leftchild 指向前驱; righttag=0 时rightchild指向右子女; righttag =1 时 rightchild 指向后继 中序线索二叉树[详细]
-
【Dongle】【数据结构】while循环与for循环
所属栏目:[安全] 日期:2020-12-15 热度:110
近日在处理数据结构中顺序表的定位问题时,想到了使用for循环,不过课本上写的是while循环,故而有疑惑到底是该用什么呢? 下面是针对定位的具体两种循环的具体代码: while循环 locateWhile(SeqlList L,DataType x ){Int i=0;While((iL.length ) (L.da[详细]
-
【数据结构】冒泡排序
所属栏目:[安全] 日期:2020-12-15 热度:101
比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,[详细]
-
【数据结构】中序线索化二叉树后实现一个迭代器来遍历二叉树
所属栏目:[安全] 日期:2020-12-15 热度:123
1.创建二叉树的结点 #pragma once#includeiostream#includestackusing namespace std;enum PointerTag{THREND,LINK,};templateclass Tstruct BinaryTreeThdNode{typedef BinaryTreeThdNodeT Node;BinaryTreeThdNode(T data):_data(data),_left(NULL),_right([详细]
-
【Dongle】【数据结构】Linklist L、Linklist *L、Node *p 和Nod
所属栏目:[安全] 日期:2020-12-15 热度:175
最近在做数据结构导论试题的时候无意中发现答案中有用到这些东西的Linklist L、Linklist *L、Node *p 和Node p,不过不清楚都具体指什么,故而从网上查找了一番: 先定义一个单链表结构体: typedef struct node { DataType data; //数据域 struct node * ne[详细]
-
【数据结构】堆&优先级队列
所属栏目:[安全] 日期:2020-12-15 热度:112
说实话,之前看数据结构的时候,并没有更多的关注到堆,直到现在...... 堆数据结构是一种数组现象,可以看成是一种完全二叉树。 堆的分类; 最大堆:每个父节点都大于其孩子结点。 最小堆:每个父节点都小于其孩子结点。 注意注意:区分与二叉排序树的区别![详细]
-
【数据结构】堆,堆实现优先级队列,堆排序
所属栏目:[安全] 日期:2020-12-15 热度:144
1.什么是堆? 堆是一种数据结构,底层是一种数组对象,它可以被视为一棵完全二叉树结构 最大堆:每个父节点的都大于孩子节点; 最小堆:每个父节点的都小于孩子节点。 2.堆数据结构二叉树存储。 如图所示是个大堆,只能保证父节点比孩子节点大。所以下标为0[详细]
-
【数据结构】大小堆的实现及堆排序
所属栏目:[安全] 日期:2020-12-15 热度:70
堆一般指二叉堆,结构如下 圈内数字指下标,圈外为内容,如图现在并不能称为一个堆,因为它并不满足大堆也不满足小堆的组成,下面介绍大堆和小堆的简答介绍和实现 大堆是指每个父节点的数都大于自己的每个孩子节点的值 用到的算法是让大数上移循环至完成大堆[详细]
-
【数据结构】基于堆的优先级队列
所属栏目:[安全] 日期:2020-12-15 热度:102
#include iostream#include assert.h#includestdlib.h#include vectorusing namespace std;templatetypename Tstruct Big{bool operator()(const T l,const T r){return lr;}};templatetypename Tstruct Less{bool operator()(const T l,const T r){return l[详细]
-
【数据结构】迭代器实现二叉树的中序遍历
所属栏目:[安全] 日期:2020-12-15 热度:198
迭代器 templateclass T,class Ref,class Ptrstruct __TreeIterator{typedef BinTreeNodeT Node;typedef __TreeIteratorT,Ref,Ptr Self;__TreeIterator(){}__TreeIterator(Node* node):_node(node){}Ref operator*(){assert(_node);return _node-_date;}Self[详细]
-
【数据结构】单链表上的基本运算
所属栏目:[安全] 日期:2020-12-15 热度:183
1.初始化 span style="font-family:KaiTi_GB2312;font-size:18px;"//建立一个空的单链表LinkList InitiateLinkList( ){ LinkList head; //头指针 head = malloc(sizeof(node)); //动态构建一个节点,它是头结点 head -next = NULL; return head;}/span 2.求[详细]
-
【数据结构】C语言实现单链表
所属栏目:[安全] 日期:2020-12-15 热度:58
用C语言实现基础单链表 结构体 首先,我们定义一个结构体Node typedef int DataType;typedef struct Node{int data;struct Node* next;}Node,*PNode; Node这个结构体中,包含一个数据元素,和一个指向下一个节点的指针 初始化链表 void InitList(PNode* pHea[详细]
-
【数据结构】二叉搜索树的删除,插入,查找
所属栏目:[安全] 日期:2020-12-15 热度:50
span style="font-family: Arial,Helvetica,sans-serif; background-color: rgb(255,255,255);"二叉搜索树的意思就是在这个二叉树中每一个左孩子的值都比他的父节点小,每一个右孩子的值都比父节点的大,中序遍历后会出现一个有序的数组/span 插入 插入节点[详细]
-
【数据结构】二叉搜索树的递归与非递归实现
所属栏目:[安全] 日期:2020-12-15 热度:71
一.什么是二叉搜索树 1. 每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。 2. 左子树上所有节点的关键码(key)都小于根节点的关键码(key)。 3. 右子树上所有节点的关键码(key)都大于根节点的关键码(key)。 4. 左右子树都是[详细]
-
【数据结构】AVL树的旋转和插入
所属栏目:[安全] 日期:2020-12-15 热度:118
AVL树 左单旋 代码实现 void _RotateL(Node* parent){Node* subR=parent-_right;Node* subRL=subR-_left;Node* ppNode=parent-_parent;subR-_left=parent;parent-_right=subRL;if(subRL)subRL-_parent=parent;if(ppNode==NULL){_root=subR; subR-_parent=NUL[详细]
-
【数据结构】线性表:Python语言描述
所属栏目:[安全] 日期:2020-12-15 热度:188
1.线性表 Python的 list 和 tuple 采用了顺序表的实现技术,具有顺序表的所有性质。 2.链接表 单向链接表 的结点是一个二元组。 其表元素域elem保存着作为表元素的数据项(或者数据项的关联信息),链接域next里保存着同一个表里的下一个结点的标识。 首先定[详细]
-
【数据结构】AVL树
所属栏目:[安全] 日期:2020-12-15 热度:111
AVL树,是一棵平衡搜索二叉树,既满足搜索树的性质(见二叉搜索树的文章,链接:二叉搜索树),又满足平衡树 的 性质(左右 子树的高度差不大于2)。 在二叉搜索树中,我们知道要插入一个元素,必须将他插到合适的位置,但是在AVL树中,不仅要插入到合适的位[详细]
-
【数据结构】文件压缩项目
所属栏目:[安全] 日期:2020-12-15 热度:69
项目名称:文件压缩 开发环境:vs2010 运用到的数据结构: 1、heap堆 2、huffmantree哈夫曼树 3、Huffmancode哈夫曼编码 4、面向对象C++编程语言 思路: 1、利用小堆建立哈弗曼树 2、利用哈弗曼树产生哈夫曼编码 3、利用哈夫曼编码对文件进行压缩,产生压缩[详细]
-
【数据结构】利用堆建立哈夫曼树
所属栏目:[安全] 日期:2020-12-15 热度:151
建堆 #pragma once #include vector #includeassert.h using namespace std;// 小堆 templateclass Tstruct Less{bool operator() (const T l,const T r){return l r;}};//大堆templateclass Tstruct Greater{bool operator() (const T l,const T r){return[详细]
-
【数据结构】数据结构与算法(一)——线性结构
所属栏目:[安全] 日期:2020-12-15 热度:112
一、前言 线性结构是一种基本的数据结构,主要用于对客观世界中具有单一的前驱和后继的数据关系进行描述。即“一个接一个排列”。特点是数据元素之间呈现一种线性关系。 二、内容介绍 2.1 线性表 ①顺序存储:插入平均移动个数是n/2,删除平均移动个数是(n-1[详细]
-
【数据结构】AVL树详解
所属栏目:[安全] 日期:2020-12-15 热度:106
1.什么是AVL树 AVL树又称平衡二叉搜索树,它能保证二叉树高度相对平衡,尽量降低二叉树的高度,提高搜索效率。单纯的二叉搜索树在最坏的情况下插入查找删除等操作时间复杂度会是O(N), 例如: 所以,AVL树就能避免这种情况,使得增删查改的时间复杂度为O(lgN)[详细]
-
【数据结构】哈希表
所属栏目:[安全] 日期:2020-12-15 热度:183
HashTable-散列表/哈希表,是根据关键字(key)而直接访问在内存存储位置的数据结构。 它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,这个映射函数叫做散列函数,存放记录的数组叫做散列表。 构造哈希表的几种方法 1. 直接定址法--取关键字[详细]
-
HDU 1542 Stars [树状数组]【数据结构】
所属栏目:[安全] 日期:2020-12-15 热度:65
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541 ———————–. Stars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8916 Accepted Submission(s): 3547 Problem Description As[详细]