![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
银河信仰
Bug就像黎明前的黑暗,只要坚持,总能看到黎明。
展开
-
内部排序:直接插入排序、选择排序、冒泡排序、希尔排序、快速排序、堆排序、归并排序代码实现(C语言)
#include<stdio.h>#include<stdlib.h>#include<math.h>//直接插入排序//排序思想:从第二个元素开始,寻找合适的位置存放该元素,一趟排完 void DinsertSort(int array[],int n){ for(int i=1;i<n;i++){//从1开始 int temp=a...原创 2020-02-13 21:24:41 · 1251 阅读 · 0 评论 -
平衡二叉树:平衡二叉树的插入操作实现(C语言)
平衡二叉树:为了避免二叉排序树高度增长过快,降低二叉排序树的性能,所以有了平衡二叉树。规定任意结点的左右子树高度差绝对值不超过1,这样的二叉树称为平衡二叉树实现代码:#include<stdio.h>#include<stdlib.h>#include<string.h>//平衡二叉树的结构体typedef struct BBTree{...原创 2020-02-11 17:35:49 · 938 阅读 · 1 评论 -
二叉排序树基本操作的实现:建立二叉排序树,插入删除数据(C语言)
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct BTree{ int date; BTree *lchild; BTree *rchild;}BTree;//插入数据 int BSTInsert(BTree *&p,int key){ if...原创 2020-02-10 15:34:28 · 2300 阅读 · 0 评论 -
图:在邻接矩阵上实现拓扑排序(C语言)
拓扑排序:用于排列事件发生的顺序,也可判断图中是否有环。代码实现:#include<stdio.h>#include<stdlib.h>#define MaxVexNum 50#define MaxInt 32767#define MaxEdgeNum 50//邻接矩阵typedef int VertexType;typedef int Edge...原创 2020-02-09 14:39:17 · 2156 阅读 · 1 评论 -
串:KMP算法及改进的实现(C语言)
#include<stdio.h>#include<stdlib.h>#include<string.h>#define MaxSize 50typedef struct Str{ char ch[MaxSize+1]; int length;}Str;//KMP算法void getNext(Str substr,int next[]){...原创 2020-02-09 14:31:20 · 1110 阅读 · 0 评论 -
最短路径:Dijkstra算法(求单源最短路径)Floyd算法(求各顶点之间最短路径)
最短路径:在一个带权图中,顶点V0到图中任意一个顶点Vi的一条路径所经过边上的权值之和,定义为该路径的带权路径长度,把带权路径最短的那条路径称为最短路径。DiskStra算法:求单源最短路径,即求一个顶点到任意顶点的最短路径,其时间复杂度为O(V*V)如图所示:求顶点0到各顶点之间的最短路径代码实现:#include<stdio.h>#include&l...原创 2020-02-06 23:48:07 · 21641 阅读 · 11 评论 -
邻接表(图)基本操作:建立无向图、有向图 深度优先遍历 广度优先遍历 代码实现(C语言)
邻接表存储结构:创建有(无)向图,深度优先遍历,广度优先遍历代码实现:#include<stdio.h>#include<stdlib.h>#include<string.h>#define MaxVertexNum 100 #define MaxSize 10 //顶点数目的最大值 bool visitedBFS[MaxVertex...原创 2020-02-06 17:05:47 · 14503 阅读 · 0 评论 -
邻接矩阵(图)基本操作:建立无向图、有向图 代码实现(C语言)
邻接矩阵存储结构:创建无向图、有向图:#include<stdio.h>#include<stdlib.h>#define MaxVexNum 100#define MaxInt 32767//邻接矩阵typedef int VertexType;typedef int EdgeType;typedef struct AMGraph{ Verte...原创 2020-02-03 22:34:58 · 6529 阅读 · 2 评论 -
图的存储结构:邻接矩阵 邻接表 十字链表 邻接多重表
邻接矩阵存储:用一个一维数组存储图中顶点的信息,用一个二维数组存储边的信息,存储顶点之间的邻接关系的二维数组称为邻接矩阵。typedef char VertexType;//顶点数据类型typedef int EdgeType;//带权图中边上权值的数据类型typedef struct { VertexType Vex[MaxVertexNum];//顶点表 EdgeType ...原创 2020-02-02 23:16:52 · 518 阅读 · 0 评论 -
由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)
下面三种序列可以唯一的构造唯一的一棵二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树层次遍历序列和中序遍历序列构造二叉树#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#define MaxSize 10typ...原创 2020-02-01 17:03:57 · 4262 阅读 · 0 评论 -
二叉树的 深度遍历:递归遍历和非递归遍历 广度遍历:(层次遍历)(c语言)
二叉树递归遍历代码:#include<stdio.h>#include<stdlib.h>#define MaxSize 10//二叉树的链式存储结构 typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree; void InitBiTre...原创 2020-01-29 23:28:33 · 1412 阅读 · 1 评论 -
栈的应用:中缀表达式计算 中缀表达式转后缀表达式(逆波兰式)中缀表达式转前缀表达式(波兰式) 后缀表达式计算 前缀表达式计算(c语言)
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#define Min 1e-8#define maxSize 10 int priority(char p){ if(p=='+'||p=='-'){ return 0; }else{ ...原创 2020-01-27 15:28:04 · 1520 阅读 · 3 评论 -
顺序表归并,链表归并,顺序表划分
将两个升序数组归并为一个大的升序数组:#include <stdio.h>#include <stdlib.h>//顺序表归并void mergearray(int a[],int lengtha,int b[],int lengthb,int c[]){ int k=0; int i=0,j=0; while(i<lengtha&&am...原创 2020-01-26 16:27:36 · 1220 阅读 · 0 评论 -
顺序表逆置,链表逆置
顺序表逆置真题:1.将一长度为n的数组的前端k(k<n)}个元素逆置后移动到数组后端,要求原数组中数据不丢失;2.将一长度为n的数组的前端k(k<n)个元素保持原序移动到数组后端,要求原数组中数据不丢失;3.将数组中的元素(Xo, X1, ... Xn-1),经过移动后变为:(Xp, Xp+1, ...Xn-1, Xo, X1, ..Xp-1) ,即循环左移p(0<p...原创 2020-01-24 11:23:39 · 1782 阅读 · 0 评论 -
王道数据结构:队列顺序存储和链式存储以及基本操作的实现(C语言版)
队列队列也是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除,操作特性为先进先出。循环队列顺序存储的实现代码:#include<stdio.h>#include<stdlib.h>#define MaxSize 10typedef struct { int data[MaxSize]; int front,rear;}SqQu...原创 2020-01-24 08:16:43 · 2409 阅读 · 0 评论 -
王道数据结构:栈顺序存储和链式存储以及基本操作的实现(C语言版)
栈只允许在一端进行插入或删除操作的线性表。对于n个不同元素进栈,出栈序列的个数为(卡特兰数)顺序栈基本操作的实现代码如下:#include <stdlib.h>#include <stdio.h>#include <math.h>#include <string.h>#define MaxSize 10//栈的顺序存储...原创 2020-01-22 10:28:47 · 5333 阅读 · 3 评论 -
考研数据结构(王道版):循环双链表上基本操作的实现(C语言)
循环双链表:与单链表相比,双链表的优势就是可以双向操作链表,在单链表中只能从表头节点开始往后顺序遍历整个链表,而循环双链表可以从表中任意节点遍历。其缺点就是 由于一个不仅有头指针,而且存在尾指针,相比于单链表来说就比较浪费存储空间。循环双链表代码实现:#include <stdio.h>#include <stdlib.h>#include <mat...原创 2020-01-20 10:11:35 · 789 阅读 · 0 评论 -
王道数据结构:单链表上基本操作的实现(C语言版)
单链表:线性表的链式存储又称单链表,它是通过一组任意的存储单元来存储线性表中的数据元素。为了建立数据元素之间的线性关系,除存放元素自身的信息外,还需要存放一个指向其后继的指针。结构示意图:data next 特点:这种存储方式增加删除元素较为方便,但不支持随机存取。其基本实现代码如下:#include <stdio.h>#include...原创 2020-01-19 15:56:07 · 3960 阅读 · 6 评论 -
王道数据结构:顺序表上基本操作的实现(C语言版)
顺序表的定义:线性表的顺序存储又称顺序表,顺序表有随机存储的优点,但对于插入删除操作需要移动大量的元素。#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#define MaxSize 10//顺序表定义typedef struc...原创 2020-01-16 20:34:24 · 2334 阅读 · 6 评论