数据结构
数据结构
lesileqin
桃花影落飞神剑,碧海潮声按玉箫
展开
-
数据结构 顺序表的插入、删除与查找基本操作
#include<iostream>#include<string>#define MAXSIZE 100 //存储空间初始分配量 #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0using namespace std;typedef struct { int data[MAXSIZE...原创 2018-11-25 17:09:53 · 4035 阅读 · 1 评论 -
【ACM初步训练】【STL】栈+队列+优先队列
栈(先进后出)1)头文件#include<stack>2)定义方式stack<数据类型> s;数据类型可以是int、char、float、double、结构体等等。3)常用基本操作s.empty(); //栈是否为空s.top(); //取出栈顶元素s.push(X); //压入新的元素s...原创 2019-04-03 21:42:25 · 344 阅读 · 0 评论 -
【数据结构】二叉树(创建、三种遍历方式、深度、结点个数)的实现
先来看一下实现效果:介绍一下三种遍历方式:先序遍历:访问 -> 左 -> 右 中序遍历:左 -> 访问 -> 右 后序遍历:左 -> 右 -> 访问主要实现方法:递归#include<iostream>using namespace std;typedef struct BiTNode{ char data; s...原创 2019-03-27 20:11:10 · 2384 阅读 · 0 评论 -
【图论】(单源最短路径)Bellman-Ford算法
单源最短路径:固定一个点,求它到其他所有点的最短路问题。记从起点s出发到顶点i的最短距离为d[i]。则下列等式成立:d[i]=min{d[j]+(从j到i的边权值)|e=(j,i)属于E} 记当前到顶点i的最短路长度为d[i],并设初值d[s]=0,d[i]=INF,再不断使用这条递推关系式更新d的值,就可以算出新的d。前提是图中不存在负圈。结束之后的d就是所求的最短距离。测试数据...原创 2019-04-10 22:00:38 · 461 阅读 · 0 评论 -
【图论】(单源最短路径)Dijkstra算法 && SPFA算法
Bellman--Ford算法友情链接:https://blog.csdn.net/lesileqin/article/details/89194677注:以上链接包含测试数据。 Dijkstra算法邻接矩阵表示实现:#include<iostream>#define MAX_V 60#define INF 999999using namespace std;i...原创 2019-04-10 23:33:21 · 227 阅读 · 0 评论 -
【图论】(任意两点最短路径)Floyd-Warrshall算法
求解所有两点的最短路得问题叫做任意两点间的最短距离。可以处理是负边的情况。代码如下:#include<iostream>#define MAXN 53#define INF 999999using namespace std;int d[MAXN][MAXN];int V,E;void warshall_floyd(){ for(int k=0;k<...原创 2019-04-16 19:28:29 · 558 阅读 · 0 评论 -
【图论】【Dijkstra】路径还原,求解最短路径
以Dijkstra算法为例,求解两个顶点之间的最短路径。算法思想:用prev[ j ]来记录最短路上顶点 j 的前驱。在d[ j ]被d[ j ] = d[ k ] + cost[ k ][ j ]更新时,修改prev[ j ]=k,这样就可以得到路径数组。这样在实现的时候、不断更新prev即可。代码如下://基于Dijkstra算法的路径还原 #include<iost...原创 2019-04-16 19:56:25 · 278 阅读 · 0 评论 -
【数据结构】期末冲刺版
名词解释:数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。(集合结构、线性结构、树结构、图结构) 存储结构(物理结构):数据对象在计算机中的存储表示称为数据的存储结构。(顺序存储结构、链式存储结构) 栈:是限定仅在表尾进行插入或删除操作的线性表。后进先出。 队列:是一种先进先出的线性表,它只允许在表的一...原创 2019-06-21 16:59:59 · 808 阅读 · 2 评论 -
【并查集】通俗易懂详解(我最爱的金庸~)
这是前几天看的一个并查集详解,原博文链接:https://blog.csdn.net/niushuai666/article/details/6662911例子就是杭电上的畅通工程:http://acm.hdu.edu.cn/showproblem.php?pid=1232首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整...转载 2019-07-21 11:11:06 · 308 阅读 · 0 评论 -
特殊的线性表:队列的基本操作(循环队、链队)
声明:博文所有gif图均为本人原创……队列(queue)队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表 ,简称FIFO。允许插入的一段叫做队尾,允许删除的一段称为队头。队列的抽象数据类型ADT 队列(Queue){ Data 同线性表。元素具有相同的类型,相邻元素...原创 2019-03-12 21:18:45 · 1026 阅读 · 0 评论 -
特殊的线性表:栈的基本操作(顺序栈、链栈)
栈和队列是两种特殊的线性结构,从数据结构的角度来看,栈和队列也是线性表。他们的特点在于仅限在表头或者表尾进行插入或者删除的操作。栈和队列都是特殊的线性结构,所以他们的实现方式也包括顺序存储和链式存储两种方式。栈(stack)栈是限定仅在表尾进行插入和删除操作的线性表。因此我们把允许插入和删除的一段叫做栈顶(top),另一端称作栈底(bottom)。没有任何数据元素的栈叫做空栈。...原创 2019-03-11 21:41:15 · 962 阅读 · 0 评论 -
队列、栈的应用(例子:加密QQ、回文字符串、括号匹配问题、小猫钓鱼)
友情提示:关于栈和队列的基本操作请访问:栈:https://blog.csdn.net/lesileqin/article/details/88381142队列:https://blog.csdn.net/lesileqin/article/details/88410689为了解题方便……本博文应用了C++容器STL的操作。以上链接为栈和队列的原理以及操作。例子:加密的QQ(队列)...原创 2018-12-17 23:40:20 · 1005 阅读 · 0 评论 -
数据结构绪论
第一章 数据结构绪论早期计算机主要用于数值计算,现在,计算机主要用于非数值计算(包括处理字符、表格和图像等具有一定结构的数据)。如何合理的组织数据、高效的处理数据,这就是“数据结构”主要研究的问题。程序设计 = 数据结构 + 算法基本概念和术语:数据(Data):是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(Data Eleme...原创 2019-02-28 21:09:59 · 538 阅读 · 0 评论 -
系统化的学习数据结构(持续更新中……)
访问文章请点击字体第一章:数据结构绪论 算法和算法分析(时间、空间复杂度)第二章:线性表:顺序表的基本操作(动态) 简单实现顺序表 线性表:链表的基本操作 简单实现单链表 顺序表的应用(线性表、有序表的合并,多项式相加)第三章...原创 2019-02-28 21:15:16 · 420 阅读 · 0 评论 -
算法和算法分析(时间、空间复杂度)
第二章 算法和算法分析程序 = 数据结构 + 算法 要想学好程序设计,可见算法是必不可少的。算法(algorithm) 是为了解决某类问题而规定的一个有限长的操作序列。算法的五个特性:有穷性:指算法在执行完有限步骤之后,自动结束而不会出现死循环,并且每个步骤都在可接受时间内完成。 确定性:算法的每一步骤都具有正确的含义,不会出现二义性。 可行性:算法的每一步都是可...原创 2019-02-28 23:10:03 · 702 阅读 · 0 评论 -
线性表:顺序表的基本操作(动态)
线性表:零个或多个数据元素的有限序列,由n(n>=0 )个数据特性相同的元素构成的有限序列;当n=0时,线性表为空表。线性结构示意图:对于非空的线性表或线性结构,其特点是:存在唯一的一个被称作“第一个”的数据元素; 存在唯一一个被称作“最后一个”的数据元素; 除第一个之外,结构中的每个数据元素均只有一个前驱; 除最后一个之外,结构中的每个数据元素均只有一个后继。线...原创 2019-03-02 16:15:35 · 2581 阅读 · 0 评论 -
简单实现顺序表
//简单顺序表的实现#include<iostream> #define MAXSIZE 10#define OVERFLOW -2using namespace std;typedef struct{ int *elem; int length;}Sqlist;bool InitList(Sqlist &L){ L.elem=new int[MAX...原创 2019-03-02 17:44:47 · 798 阅读 · 2 评论 -
线性表:链表的基本操作
线性表的链式存储方式:用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素与其后继元素的逻辑关系,除了本身数据信息之外,还需要存储一个指示其直接后继的信息。这两部分,称为结点,数据本身信息叫做数据域,存储后继位置信息的叫做指针域。下图是链式存储结构示意图: 如下图,我们可以很清晰的看到,每个结点是怎么组成的:...原创 2019-03-03 17:47:45 · 4139 阅读 · 0 评论 -
简单实现单链表
//简单实现单链表#include<iostream>using namespace std;typedef struct LNode{ int data; //数据域 struct LNode *next; //指针域 }LNode,*Linklist;bool InitList(Linklist &L){ L=new LNode; L-...原创 2019-03-03 21:51:42 · 709 阅读 · 0 评论 -
线性表的应用(线性表、有序表的合并,多项式运算)
友情提示: 本博客所有代码均有使用链表、顺序表预编译的函数,有了算法,后续写程序自主调用就可以了。 友情链接: 顺序表的基本操作函数:https://blog.csdn.net/lesileqin/article/details/88075259 单链表的基本操作函数:https://blog.csdn.net/lesileqin/article/details/88088051线性表的...原创 2019-03-09 17:09:19 · 1980 阅读 · 0 评论 -
链表:多项式的运算(相加、相减)
多项式相加的各个步骤以及解题分析,请访问以下网址: https://blog.csdn.net/lesileqin/article/details/88358871 //实现多项式的运算 #include<iostream>using namespace std;typedef struct PNode{ float coef; //系数 int...原创 2019-03-10 15:32:53 · 1796 阅读 · 0 评论 -
【数据结构】-- 串(BF、KMP算法)
计算机上的非数值处理的对象大部分是字符串数据,字符串一般简称为串(string)。串的定义串(string)(或字符串)是由零个或多个字符组成的有限序列。串的概念解释:空串(null string):零个字符的串。 子串:串中任意个连续的字符组成的子序列,子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。 主串:包含子串的串相应的称为主串。 空格串:只包含空格的...原创 2019-03-16 16:37:09 · 592 阅读 · 0 评论 -
【树状数组】模板及详解
树状数组详解树状数组是一种特殊的数据结构,假设我们有个数组a,建立的树状数组C,能够快速完成下述操作:计算前缀和,给定 i,计算 更改某个位置的值,给定 pos 和 x ,执行 计算区间和,给定区间 l 和 r ,计算需要建立的树状数组如下图所示:图像摘自:6954717的博客得到了树状数组的图,很容易发现:c[1] = a[1]c[2] = a[1] ...原创 2019-10-09 17:24:18 · 326 阅读 · 0 评论