数据结构
文章平均质量分 62
小桃核
永保活力,学习的道路任重而道远!!!!!!
展开
-
算法————双栈实现队列、双队列实现栈、实现一个栈Push(出栈)Pop(入栈)Min(返回最小值的操作)的时间复杂度为O(1)
一.双栈实现队列1.思路原理:队列的特点,先进先出;栈的特点,后进先出;原理刚好相反,那么无非是俩个栈互相“倒“或者“导”,这都不是重点了,有了这个初步思路我们就得想办法来实现如何倒了。2“倒”或者“导”思路图:法①:核心原理:每次插入都得倒回popstack栈的所有元素,最后所有的元素回归popstack法一代码:template<class T>class QueueByTwoStack{原创 2017-10-10 20:26:01 · 932 阅读 · 0 评论 -
数据结构————二叉树
二叉树是数据结构的一个重要内容之一,那么对于我们这些学习编程的人来说,掌握二叉树的各种遍历(递归遍历和非递归遍历)是必不可少的,下面我们就分析一下,二叉树的各种遍历方法:1首先得建立一个二叉树:1.二叉树节点struct BinaryTreeNode//二叉树节点 { BinaryTreeNode* _left; BinaryTreeNode* _right; T _原创 2017-09-19 23:15:14 · 417 阅读 · 0 评论 -
数据结构————(堆排)创建堆、优先级队列、Topk、堆排序
堆是数据结构的一种,堆分为大堆和小堆堆的概念:堆是一颗完全二叉树,通常情况下我们用数组来表示堆,在下面我用的是vector其实也就是数组;大堆(是一颗二叉树,它的特点是父亲节点大于它左右孩子);小堆(即就是它的父亲节点小于它的左右孩子);堆的实现这里我们采用适配器模式来实现大小堆,避免一些重复的代码;首先我们的了解堆一般都那些接口,push、pop、size、top、empty;堆的实现的核心算法:原创 2018-03-15 21:50:58 · 363 阅读 · 0 评论 -
算法————入栈出栈合法性检验
出栈入栈合法性检验1.首先得讲一下对问题的理解,例如这样一道题问题如下:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)是合法序列,入栈的序列(1,2,3,4,5),出栈序列为(1,5,3,2,4)是不合法序列2.问题就是这样,也就是说给我们一串这样的数组,我们用不同的入栈方式,是否能得到所要验证的出栈序列,那么我们可以还原入栈出战的场景,顺着出栈顺序的思路入栈出栈,看是否能够顺利原创 2018-02-24 15:09:57 · 1236 阅读 · 0 评论 -
数据结构————Vector、List的使用和模拟
1.初步了解和使用vector list·vector实质是一个动态增长数组,list是一个链表,他们都是STL的一种容器。①使用vector#vector使用样例代码:#pragma once#include&amp;lt;iostream&amp;gt;using namespace std;#include&amp;lt;vector&amp;gt;void test_vector(){ vector&原创 2017-12-07 20:36:22 · 439 阅读 · 3 评论 -
数据结构————实现顺序表、单链表、双链表
1.顺序表:#define _CRT_SECURE_NO_WARNINGS 1#include#includeusing namespace std;typedef int DataType;class Seqlist{public: Seqlist() :_array(NULL) ,_size(0) ,_capatify(0) { } Seqlist(con原创 2017-07-20 09:58:03 · 364 阅读 · 0 评论 -
数据结构————堆(TopK、堆)
堆是数据结构的一种,可用于排序和海量数据处理中的TopK问题堆的逻辑结构:是一颗完全二叉树,由于是是一颗完全二叉树我们就可通过数组来实现他的存储方式。上面是一颗完全二叉树,分别为树状存储、数组存储。堆的性质:1.堆分为大堆和小堆。2.大堆的对顶大于它的左子树和右子树(小堆相反)。3.左右子树分别为大堆(或者小堆)。4.为方便计数满足数组的存储方式有以下规律:a.lchild(左...原创 2018-09-26 15:45:45 · 679 阅读 · 0 评论 -
数据结构————文件压缩(利用哈夫曼编码实现)
文件压缩原理:首先文件压缩是通过HuffmaCode实现的、整体思路通过读取文件获取字符出现频率,通过字符出现频率可以构建HuffmanTree,每个文件中出现的字符通过HuffmanTree获取HuffmanCode,从而将文件中的字符同过HuffmanTree获取相应编码,并写入压缩文件,从而完成文件压缩。为什么通过HuffmanCode可以实现文件的压缩呢?原因:1.每个文件的字符种类...原创 2018-10-16 20:26:46 · 3080 阅读 · 0 评论