数据结构
Starzkg
你已经是一个成熟的程序猿了,要学会自己DEBUG了。
展开
-
C++——《数据结构与算法》实验——排序算法的实现
问题描述1) 动态输入一组数字序列;2)实现直接插入排序、简单选择排序、冒泡排序、快速排序算法;3)在主函数中,依次测试上述算法。类型定义#define MAX SIZE 100typedef int KeyType ;typedef struct RecType{ KeyType key ; /*关键字码*/ infoType otherinfo; /* 其他域*/} RecType ;typedef struct SqList{ ..原创 2020-05-24 18:59:31 · 790 阅读 · 0 评论 -
RSA加密算法
基本概念RSA加密算法:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力的公钥加密算法,该算法基...原创 2020-01-15 20:06:07 · 5961 阅读 · 0 评论 -
《数据结构与算法》实验报告——快速排序
《数据结构》实验报告 学号: 2018329621200 机器号 10-414-28 姓名: 申屠志刚 日期: 2019/12/18 程序名: main.cpp 实验内容: 快速排序 目的和要求(需求...原创 2019-12-18 16:19:40 · 4909 阅读 · 0 评论 -
《数据结构与算法》课程设计报告——赫夫曼编码/译码器
题目 赫夫曼编码/译码器 实验目的 本课程设计是为了让同学们了解学习数据结构的作用和意义。数据结构是计算机科学与技术专业的专业基础课,是十分重要的课程。所有的计算机系统软件和应用软件都要用到各种类型的数据结构。因此,想要更好地运用计算机来解决实际问题,仅仅掌握几门计算机程序设计语言是远远难以应付当前众多复杂的课题,想要有效地使用计算机,充分发挥它的性能,还必须学习和掌握好数据结构...原创 2019-12-14 19:06:32 · 3871 阅读 · 0 评论 -
《数据结构与算法》实验报告——无向图邻接表的构造
《数据结构》实验报告 学号: 2018329621200 机器号 10-414-28 姓名: 申屠志刚 日期: 2019/12/9 程序名: main.cpp ...原创 2019-12-09 09:38:25 · 5434 阅读 · 2 评论 -
C++——赫夫曼编码-译码器(Huffman Coding)
基本概念哈夫曼编码(Huffman Coding):又称霍夫曼编码、赫夫曼编码-,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。源代码#include<iostream>#in...原创 2019-11-22 12:04:38 · 2577 阅读 · 1 评论 -
赫夫曼编码-译码器(Huffman Coding)
基本概念哈夫曼编码(Huffman Coding):又称霍夫曼编码、赫夫曼编码-,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。需求分析https://shentuzhigang.blog.cs...原创 2019-11-25 17:27:43 · 647 阅读 · 0 评论 -
《数据结构与算法》课程设计任务书——赫夫曼编码/译码器
《数据结构与算法》课程设计(2019/2020学年第一学期)指导教师:孙麒、霍戌文《数据结构与算法》课程设计任务书《数据结构与算法》是计算机科学与技术专业重要的核心课程之一,在计算机专业的学习过程中占有非常重要的地位。《数据结构与算法课程设计》就是要运用本课程以及到目前为止的有关课程中的知识和技术来解决实际问题。特别是面临非数值计算类型的应用问题时,需要选择适当的数据结构,设计出满足一定...原创 2019-11-20 21:30:10 · 1502 阅读 · 0 评论 -
《数据结构与算法》实验报告——二叉树的遍历
《数据结构》实验报告 学号: 2018329621200 机房号 10-414 姓名: 申屠志刚 日期: 2019/11/4 程序名: main.cpp 实验内容: 二叉树的遍历 ...原创 2019-11-03 20:47:55 · 13570 阅读 · 0 评论 -
《数据结构与算法》实验报告——单链表的就地反转
《数据结构与算法》实验报告 学号: 2018329621200 机房号 10-525 姓名: 申屠志刚 日期: 2019/10/12 程序名: main.cpp 实验内容: 单链...原创 2019-10-11 18:57:09 · 2241 阅读 · 0 评论 -
线段树合并
一、基本概念线段树合并:将已有的两棵线段树合并为一棵,相同位置的信息整合到一起,通常是权值线段树比较裸的,就是将一棵线段树的每一个位置取出来插入另一棵中,但比较高效的线段树合并可以参照可并堆的合并方式二、算法假设两棵线段树树:合并线段树合并的原理:对于两颗树的节点u和v①如果u为空,返回v②如果v为空,返回u③否则,新建节点t,整合u和v的信...原创 2019-07-10 20:20:06 · 1079 阅读 · 2 评论 -
差分数组
一、基本概念差分数组:对于已知有n个元素的离线数列d,我们可以建立记录它每项与前一项差值的差分数组f:显然,f[1]=d[1]-0=d[1];对于整数i∈[2,n],我们让f[i]=d[i]-d[i-1]。二、性质(1)计算数列各项的值:观察d[2]=f[1]+f[2]=d[1]+d[2]-d[1]=d[2]可知,数列第i项的值是可以用差分数组的前i项的和计算的,即d[i]=f[i]的...原创 2019-07-13 16:44:06 · 363 阅读 · 0 评论 -
线段树——区间离散化/压缩
一、基本概念线段树:线段树基本概念离散化:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:原数据:1,999,100000,15;处理后:1,3,4,2;原数据:{100,200},{20,50000},{1,400};处理后:{3,4},{2,6},{1,5};二...原创 2019-04-30 17:56:49 · 789 阅读 · 0 评论 -
ACM基础知识及算法
ACM 算法 难度 数据结构 栈 栈 1 单调栈 队列 一般队列 1 优先队列/单调队列 1 循环队列 2 双端队列 2 链表 一般链表 1 ...原创 2019-04-14 00:40:55 · 1100 阅读 · 0 评论 -
queue队列
一、queue的基本概念queue的中文名字叫做队列。队列是什么呢?队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。假设小红球,小黄球,小蓝球和小绿球这四个球去买票。小红球先排队,然后黄蓝绿依次站在后面。那么...原创 2018-10-15 06:59:39 · 736 阅读 · 0 评论 -
priority_queue优先队列
引入优先队列是一种特殊的队列,在学习堆排序的时候就有所了解。那么优先队列是什么呢? 说白了,就是一种功能强大的队列。它的功能强大在哪里呢? 四个字:自动排序。优先队列的头文件&&声明首先,你需要#include<queue>using namespace std;这两个头文件。其次,一个优先队列声明的基本格式是: priori...原创 2018-10-15 06:59:46 · 384 阅读 · 0 评论 -
离散化
离散化,就是把一些很离散的点给重新分配。举个例子,如果一个坐标轴很长(>1e10),给你1e4个坐标,询问某一个点,坐标比它小的点有多少。很容易就知道,对于1e4个点,我们不必把他们在坐标轴上的位置都表示出来,因为我们比较有多少比它小的话,只需要知道他们之间的相对大小就可以,而不是绝对大小,这,就需要离散化。而离散化又分为两种,分为的两种是对于重复元素来划分的。第一种是重复元素离...原创 2018-10-29 23:17:43 · 307 阅读 · 0 评论 -
线段树
线段树原理 线段树是一颗二叉树,他的每个节点对应的都是一个区间,主要是通过对区间的分割和合并来修改节点的值, 然后再得到答案。 现在给你一个 目的为求区间和 所造出来的线段树 线段树。如下图所示。仔细观察,第一二三行方框内的值是他的下面2个子区间的和, 第四行的方框内的数字代表的是自身的值, 蓝色代表的是这个方框他包含的区间, 红色代表的是这个元素在数组中所...原创 2018-10-26 17:42:08 · 891 阅读 · 0 评论 -
并查集
在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛...原创 2018-10-31 13:17:36 · 301 阅读 · 0 评论 -
最小生成树
生成树的概念 在一个任意连通图G中,如果取它的全部顶点和一部分边构成一个子图G',即:V(G')=V(G)和E(G')⊆E(G) 若同时满足边集E(G')中的所有边既能够使全部顶点连通而又不形成任何回路,则称子图G'是原图G的一棵生成树。 下面简单说明一下,在既能够连通图G中的全部n个顶点又没有形成回路的子图G'(即生成树)...原创 2018-10-31 19:46:00 · 228 阅读 · 0 评论 -
树状数组
lowbit函数这里我们先不管树状数组这种数据结构到底是什么,先来了解下lowbit这个函数,你也先不要问这个函数到底在树状数组中有什么用;顾名思义,lowbit这个函数的功能就是求某一个数的二进制表示中最低的一位1,举个例子,x = 6,它的二进制为110,那么lowbit(x)就返回2,因为最后一位1表示2。那么怎么求lowbit呢?还记得 剑指Offer66题之每日6题 - 第...原创 2018-11-02 09:49:03 · 224 阅读 · 0 评论 -
字典树(Trie)
一、定义Trie树,又称为前缀树(Prefix Tree)、单词查找树或键树,是一种多叉树结构。二、基本性质根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。 每个节点的所有子节点包含的字符互不相同。三、代码#include <iostream>#include <stri...原创 2019-01-19 23:32:33 · 447 阅读 · 0 评论 -
ST表
一、定义ST表的功能很简单它是解决RMQ问题(区间最值问题)的一种强有力的工具它可以做到O(nlogn)预处理,O(1)查询最值二、算法ST表是利用的是倍增的思想拿最大值来说我们用Max[i][j]表示,从i位置开始的2j个数中的最大值,例如Max[i][1]表示的是i位置和i+1位置中两个数的最大值那么转移的时候我们可以把当前区间拆成两个区间并分别取最大值(注意这...原创 2019-03-10 23:39:56 · 388 阅读 · 0 评论 -
堆(Heap)
一、定义计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。二、特点Heap是一种数据结构具有以下的特点:1)完全二叉树;2)heap中存储的值是偏序;Min-heap: 父节点的值小于或等于子节点的值;Max-heap: 父节点的值大于或等于子节点的值;三、算法思想不必将值一个个地插入堆中,通过交换形成堆。假设根的...原创 2019-03-12 22:49:18 · 349 阅读 · 0 评论 -
二分图
一、基本概念二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。二分图判断:当且仅当无向图G的每一个回路的次数均是偶数时,G才是一个二分图。如果无回路,相当于任一回路的次数为0,故也...原创 2019-04-10 12:57:57 · 1089 阅读 · 2 评论 -
哈夫曼树
1、哈夫曼树的基本概念 ---- 哈夫曼(Huffman)树又称作最优二叉树,它是n个带权叶子结点构成的所有二叉树中,带权路径长度最小的二叉树。---- “路径”就是从树中的一个结点到另一个结点之间的分支构成的部分,而分支的数目就是路径长度。---- 树的路径长度:就是从树根到每一结点的路径长度之和。---- 考虑带权的结点,结点的带权路径长度为:从该结点到树根之间的路径长度与结点...原创 2018-10-14 20:42:42 · 376 阅读 · 0 评论