![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
PGmotherfuckerONE
这个作者很懒,什么都没留下…
展开
-
数据结构——四种最常见的线性表
数据之间常见的逻辑结构包括线性结构、关联结构(集合、映射)、树形结构、图形结构.线性表是数据结构中最简单的基本数据结构.数组、链表、栈、队列是四种最常见的线性表.1.数组对数组的基本操作有查找、插入、删除. 数组元素的直接访问几乎没有开销,但是插入和删除操作需要移动数组元素,开销比较大,因此在插入和删除操作比较频繁的场合下,不适合用数组.在数组中查找一个元素的时间复杂度为O(n) 如果数...转载 2018-11-30 21:23:31 · 1043 阅读 · 1 评论 -
C++数据结构-二叉树的创建及其遍历
#include <iostream>using namespace std;//二叉树的创建及其遍历typedef struct btree{ char data; struct btree *lchild; struct btree *rchild;} BtNode,*Btree;/************前序法创建一棵二叉树********...原创 2018-12-01 14:59:20 · 208 阅读 · 0 评论 -
C++数据结构-直接插入排序
#include <iostream>#define N 13using namespace std;/***将46,74,16,53,14,26,40,53,86,65,27,34从小到大排序*直接插入排序方法*基本思想:依次从待排序数列中取出一个元素,跟前面已经排序好的有序数列从后往前比较后,插入到有序数列的适当位置*/void direct_sort(int *...原创 2018-12-05 08:58:36 · 216 阅读 · 0 评论 -
C++数据结构-邻接表的图的广度优先遍历BFS
#include <iostream>#define MAXVEX 8 //起始顶点数默认为8,可在此直接修改#define MAXEDGE 10 //起始边的数默认为10,可在此直接修改using namespace std;//该代码是无向图的邻接表的BFS//注意点1:下标0的位置都不用,所以要多开辟一个空间//注意点2:头结点信息既可以是字符A,...原创 2018-12-03 09:55:09 · 878 阅读 · 1 评论 -
C++数据结构-冒泡排序及其优化
#include &lt;iostream&gt;#define N 12using namespace std;/***46,74,16,53,14,26,40,53,86,65,27,34从小到大排序*冒泡排序*冒泡排序的优化(用一个标记值flag)*/void swapNum(int &amp;num1,int &amp;num2){ int temp=num1;...原创 2018-12-05 09:55:29 · 715 阅读 · 0 评论 -
C++数据结构-创建霍夫曼树和霍夫曼编码
#include &amp;lt;iostream&amp;gt;using namespace std;//霍夫曼树的创建//步骤1:从要参与建树的结点中选出两个权值最小的结点//步骤2:将选出的两个结点合并成一个新结点,权值为这两结点权值之和//步骤3:将新生成的结点加入到参与建树的结点中去,再从中选出两个最小结点(前面选过的结点不再考虑)建树//步骤4:以此类推......//注意点1:n个...原创 2018-12-01 19:45:55 · 1379 阅读 · 1 评论 -
C++数据结构-快速排序
#include &amp;lt;iostream&amp;gt;#define N 13using namespace std;//快速排序typedef struct{ int nums[N]; //数组元素13个,第一个为中转,实际有效为12个 int length; //待排序个数12个}Sqlist;/******************互换两数的值*...原创 2018-12-05 10:32:17 · 201 阅读 · 0 评论 -
C++数据结构-简单选择排序
#include &lt;iostream&gt;#define N 13using namespace std;/***46,74,16,53,14,26,40,53,86,65,27,34从小到大排序*简单选择排序(直接选择排序)*第一个数跟他后面的其他数逐一比较,获得最小值的下标,然后将第一个跟最小值互换*第二个数同上.........*//***************...原创 2018-12-05 10:55:32 · 382 阅读 · 0 评论 -
C++数据结构-堆排序(二叉树堆)
#include &amp;amp;lt;iostream&amp;amp;gt;#include &amp;amp;lt;iostream&amp;amp;gt;#define N 13using namespace std;/***46,74,16,53,14,26,40,53,86,65,27,34从小到大排序*堆排序*//*************************创建最大堆**********原创 2018-12-05 12:14:23 · 203 阅读 · 0 评论 -
C++数据结构-顺序查找算法
#include &lt;iostream&gt;#define N 10using namespace std;typedef struct{ int *elem; int length;}SSTable;//顺序查找1int SSearch1(SSTable &amp;s , int k) //k是要查找的值{ for(int i=1;i&lt;=N...原创 2018-12-08 10:03:28 · 1863 阅读 · 0 评论 -
C++数据结构-二分(折半)查找算法
#include <iostream>#define N 10using namespace std;//下标为0的位置暂时不用,所以多开一个空间typedef struct{ int *elem; int length;}SSTable;//二分查找(折半查找)算法int BinSearch(SSTable &s ,int k){ ...原创 2018-12-08 10:13:34 · 223 阅读 · 0 评论 -
C++数据结构-归并排序
#include &amp;lt;iostream&amp;gt;#define N 13using namespace std;/***46,74,16,53,14,26,40,53,86,65,27,34从小到大排序*归并排序*//**********************合并算法*************************///将有序表A[low,mid]和A[mid+,high...原创 2018-12-05 14:45:51 · 137 阅读 · 0 评论 -
C++数据结构-二叉排序树的查找、创建和删除
#include <iostream>#define TRUE 1#define FALSE 0using namespace std;typedef int Status;typedef struct BtNode{ int data; //数据域 struct BtNode *lchild,*rchild;}BtNode,*BTree;//二叉...原创 2018-12-08 17:16:06 · 588 阅读 · 0 评论 -
C++数据结构-普利姆算法最小生成树
#include <iostream>#define MAXVEX 6 //结点数(初始默认6顶点,更改的话直接在这里修改即可)#define MAXEDGE 10 //边数(初始默认10条边,更改的话直接在这里修改即可)#define INFINITY 65535 //表示无穷大using namespace std;//普利姆最小生成树原理://步...原创 2018-12-03 19:52:41 · 581 阅读 · 0 评论 -
C++数据结构-队列的初始化及其插入删除操作
#include <iostream>#define N 10using namespace std;//静态循环队列(用数组)//用模%来实现队列的循环//约定head指针指向实际头元素的位置//约定rear指针指向实际尾元素的后一个位置//约定当数组只剩一个空位是,默认此时数组已满(为了避免区别队满和队空的判断条件)typedef struct{ in...原创 2018-11-30 21:19:06 · 4051 阅读 · 1 评论 -
C++数据结构-栈的初始化及其压栈和出栈-方法3
方法3就是完全用单链表的方式建立栈:这种建栈方式可理解为:1.初始化栈就是初始化建立单链表表头节点2.压栈就是把,用头插法把结点一个个接上去3.每次出栈就是把第一个结点销毁的过程4.这样正好满足栈的后进先出原则。...原创 2018-11-30 20:19:55 · 268 阅读 · 0 评论 -
C++数据结构-无向图有向图的邻接矩阵的创建
#include &amp;amp;lt;iostream&amp;amp;gt;#include &amp;amp;lt;cstdio&amp;amp;gt;#define MAXVEX 4 //结点数(初始默认4顶点,更改的话直接在这里修改即可)#define MAXEDGE 5 //边数(初始默认5条边,更改的话直接在这里修改即可)using namespace std;//下面代码是无向图的邻接矩阵原创 2018-12-02 13:07:23 · 3696 阅读 · 0 评论 -
C++数据结构-顺序表初始化及其增删改查
#include &lt;iostream&gt;#include &lt;cstdlib&gt;#define MAXSIZE 20 //顺序表的最大长度#define N 11using namespace std;/***实现顺序表的初始化和增删改查*注意:该程序默认顺序表的第0个位置不用,元素从1开始存放*/typedef struct{ int *ele...原创 2018-11-29 19:03:09 · 1154 阅读 · 0 评论 -
C++数据结构-拓扑排序
#include <iostream>#include <cstdlib>#define MAXVEX 6 //起始顶点数默认为6,可在此直接修改#define MAXEDGE 8 //起始边的数默认为8,可在此直接修改using namespace std;//该代码是邻接表拓扑排序原理//步骤1:在有向图中选一个没有前驱(即入度为0)的顶...原创 2018-12-04 12:26:47 · 245 阅读 · 0 评论 -
C++数据结构-有向图无向图的邻接表创建
#include <iostream>#define MAXVEX 4 //起始顶点数默认为6,可在此直接修改#define MAXEDGE 5 //起始边的数默认为5,可在此直接修改using namespace std;//该代码是无向图的邻接表//注意点1:下标0的位置都不用,所以要多开辟一个空间//注意点2:头结点信息既可以是字符A,B,C,D,...原创 2018-12-02 16:12:15 · 5042 阅读 · 0 评论 -
C++数据结构-单链表初始化及其增删改查
#include &lt;iostream&gt;#include &lt;cstdlib&gt;using namespace std;/***单链表的初始化、增删改查*注意点1:指针结点必须要先赋空间才能使用*注意点2:该程序省去了一些判断条件,默认初始化和增删改查各项操作都是可执行的*/typedef struct lNode{ int data; ...原创 2018-11-29 22:32:57 · 3996 阅读 · 0 评论 -
C++数据结构-图的单源最短路径迪杰斯特拉算法
#include <iostream>#define MAXVEX 5 //结点数(初始默认6顶点,更改的话直接在这里修改即可)#define MAXEDGE 8 //边数(初始默认10条边,更改的话直接在这里修改即可)#define INFINITY 65535 //表示无穷大using namespace std;//下面代码是有向图的邻接矩阵(某顶点到...原创 2018-12-04 17:34:29 · 484 阅读 · 1 评论 -
C++数据结构-循环链表的创建及其与单链表的区别
#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstdlib&amp;gt;using namespace std;//注意点1:就是把末尾指针指向头结点//注意点2:显示循环链表时,记得更改判断条件//详情见代码typedef struct lNode{ int data; //数据域 struct lNode *next; //指针域原创 2018-11-30 11:08:43 · 273 阅读 · 0 评论 -
C++数据结构-双向链表和单链表的区别及其初始化
#include &lt;iostream&gt;#include &lt;cstdlib&gt;using namespace std;//双向链表和单链表的区别及其初始化//相比单链表,多了一个前驱指针域//初始化的时候,多了一步(详见初始化函数)typedef struct lNode{ int data; //数据域 struct lNode *ne...原创 2018-11-30 14:37:57 · 858 阅读 · 0 评论 -
C++数据结构-邻接矩阵的图的深度优先遍历DFS
#include &lt;iostream&gt;#define MAXVEX 4 //结点数(初始默认4顶点,更改的话直接在这里修改即可)#define MAXEDGE 5 //边数(初始默认5条边,更改的话直接在这里修改即可)using namespace std;//下面代码是无向图的邻接矩阵及其深度优先遍历//删掉里面的一行代码就成了有向图的邻接矩阵及其深度优先遍历...原创 2018-12-02 19:42:53 · 1583 阅读 · 1 评论 -
C++数据结构-邻接表的图的深度优先遍历DFS
#include <iostream>#define MAXVEX 5 //起始顶点数默认为5,可在此直接修改#define MAXEDGE 6 //起始边的数默认为6,可在此直接修改using namespace std;//该代码是无向图的邻接表的DFS//注意点1:下标0的位置都不用,所以要多开辟一个空间//注意点2:头结点信息既可以是字符A,B,...原创 2018-12-02 20:09:56 · 1678 阅读 · 0 评论 -
C++数据结构-邻接矩阵的图的广度优先遍历BFS
#include &lt;iostream&gt;#define MAXVEX 8 //结点数(初始默认8顶点,更改的话直接在这里修改即可)#define MAXEDGE 10 //边数(初始默认10条边,更改的话直接在这里修改即可)using namespace std;//下面代码是无向图的邻接矩阵及其广度优先遍历//删掉里面的第60行代码就成了有向图的邻接矩阵及其广度...原创 2018-12-02 21:09:35 · 2660 阅读 · 5 评论 -
C++数据结构-图的多源最短路径弗洛伊德算法
#include <iostream>#define MAXVEX 9 //结点数(初始默认9顶点,更改的话直接在这里修改即可)#define MAXEDGE 16 //边数(初始默认16条边,更改的话直接在这里修改即可)#define INFINITY 65535 //表示无穷大using namespace std;//下面代码是无向图的邻接矩阵多源...原创 2018-12-04 22:54:48 · 380 阅读 · 0 评论 -
C++数据结构-栈的初始化及其压栈和出栈-方法2
#include &lt;iostream&gt;#include &lt;cstdlib&gt;#define N 10#define STACK_MAX_SIZE 20using namespace std;//方法2//栈的初始化,压栈,出栈,清空栈等操作//本质还是静态栈typedef struct{ int *base; //指向栈底的指针,存放int...原创 2018-11-30 19:39:10 · 897 阅读 · 0 评论 -
C++数据结构-栈的初始化及其压栈和出栈-方法1
#include <iostream>#include <cstdlib>#define MAXSIZE 20#define N 10using namespace std;//方法1//静态栈的创建及其出栈入栈//注意点:栈的0位置默认不存放数据,从下标1开始操作typedef struct sqstack{ int *elem; i...原创 2018-11-30 19:41:35 · 604 阅读 · 0 评论 -
C++数据结构-平衡二叉树AVL的构建,插入和调整
#include <iostream>#define TRUE 1#define FALSE 0#define LH 1 //左高#define EH 0 //等高#define RH -1 //右高using namespace std;typedef int Status;typedef struct BiTNode{ int data; //结...原创 2018-12-09 11:07:24 · 310 阅读 · 0 评论