数据结构
@玉面小蛟龙
这个作者很懒,什么都没留下…
展开
-
利用二叉树将中缀表达式转换为后缀表达式
文章目录表达式与二叉树的关系样例一样例二表达式与二叉树的关系前缀表达式对应于二叉树的前序遍历中缀表达式对应于二叉树的中序遍历后缀表达式对应于二叉树的后序遍历样例一3+4/(5-(6+1))*8(5-(6+1))优先级最高,先算这个(6+1)先算内部,再算5-()算/与*,优先级相同,从左到右最后算3+….最后进行后序遍历(后缀表达式为):34561+ -/8*+样例二a+b-a*((c+d)/e-f)+g先算:((c+d)/e-f)—>(c+d)—> (c+d)原创 2021-10-14 10:27:47 · 3893 阅读 · 0 评论 -
桶排序——java
文章目录桶排序的一般过程桶排序样例过程图解java语言代码桶排序的一般过程桶排序是计数排序的升级版。首先要确定一个桶表示的范围,然后将要排序的数据分到各个有序的桶里面。然后对对个桶里面的数据单独排序,再把桶里面的数据依次取出,完成排序。桶排序样例过程图解以8,14,28,45,5,9,34,46,48,25,19,4,56,50为例:java语言代码代码出处public int[] buketSort(int[] array, int backetSize) { int[] r原创 2020-07-20 17:10:21 · 111 阅读 · 0 评论 -
计数排序——c语言
文章目录计数排序的一般过程计数排序样例过程图解c语言代码计数排序的一般过程计数排序不通过比较元素之间的大小来排序,利用数组的下标来计数,当这个数出现时,则对应数组计数加一。最后直接遍历数组得到排好序的序列。计数排序样例过程图解文章以8, 9,2,3,5,8,11,14,13为例c语言代码#include <stdio.h>int a[16];int main(void){ int num,i,b,j; printf("请输入排序的个数:"); scanf("%d",&a原创 2020-07-19 10:49:18 · 602 阅读 · 0 评论 -
各类排序算法时间复杂度,空间复杂度及其稳定性
图片出处转载 2020-07-18 21:53:09 · 130 阅读 · 0 评论 -
二叉树排序——c语言实现
文章目录本文二叉树排序实现的功能二叉排序树的定义二叉排序树样例图解c语言代码本文二叉树排序实现的功能输入一串数字,输出从小到大的排序。二叉排序树的定义二叉排序树要么是空二叉树,要么具有如下特点:二叉排序树中,如果其根结点有左子树,那么左子树上所有结点的值都小于根结点的值;二叉排序树中,如果其根结点有右子树,那么右子树上所有结点的值都大小根结点的值;二叉排序树的左右子树也要求都是二叉排序树;中序遍历二叉排序树,则是从小到大排序下面就是一颗二叉排序树:二叉排序树样例图解以4,5,7,原创 2020-07-17 22:02:49 · 3655 阅读 · 0 评论 -
堆排序——c语言实现
文章目录堆的概念堆的定义堆的判断堆的特性堆的构造自底向上构造自顶向下构造关于最大堆,最小堆堆排序堆排序的一般过程堆排序样例过程图解c语言代码堆的概念堆的定义堆可以定义为一颗二叉树,树的节点包含键(每个节点一个键),并且满足下面两个条件:堆的形状要求是一颗完全二叉树,意识就是说,树的每一层都是满的,除了最后一层最右边的元素可能有缺位父母优势要求,就是说每一个节点的键都要大于或等于它子女的键。堆的判断下面这个就不是堆,因为不是完全二叉树下面这个也不是堆,堆的节点比子节点大,4比5小下面原创 2020-07-16 23:08:19 · 7102 阅读 · 2 评论 -
冒泡排序——c语言实现
文章目录冒泡排序的一般过程冒泡排序样例过程图解c语言代码冒泡排序的一般过程冒泡排序,它比较序列中相邻元素的大小,(假设排序从小到大)如果左边的数大于右边相邻的数,则将两个数进行交换,继续和后面的数进行比较。如果左边的数小于右边相邻的数,则用右边的数往后比较。一直重复上述过程,直到重复n-1遍后,该序列就排好了。冒泡排序样例过程图解以9,8,11,5,0,3为例:第一个数9和8交换位置,9比11小,不交换位置,下一个从11开始比较。11比5大,交换;11比0大,交换;11比3大,交换;最后11最原创 2020-07-15 13:27:20 · 189 阅读 · 0 评论 -
归并排序——c语言实现
文章目录归并排序的一般过程归并排序过程样例图解c语言代码归并排序的一般过程归并排序也是利用分治技术的一种排序算法。归并算法就是将要排序的数组切成两半,,然后递归继续切,直到最后切成单个元素。然后重新合并(归并),每两个合并成一个大的,直到最后合并成一个,排序完成。归并排序过程样例图解以6,2,7,8,9,4,5,0,3为例先切割,后合并。c语言代码#include <stdio.h>#include <stdlib.h>typedef int Elemtype;原创 2020-07-14 17:09:02 · 2091 阅读 · 1 评论 -
快速排序——c语言实现
文章目录快速排序的一般过程快速排序过程样例图解样例按照基准数分类,小的在左边,大的在右边左边排序完成c语言代码快速排序的一般过程快速排序是一种基于分治技术的重要排序算法。实现过程是每次从排序的序列中选出一个基准值(下文都是以序列左边第一个数为基准,record),left指针指向第一个基准值。然后从序列的最右边(right指针)开始,当right指针指向的值大于record值时,right指针减1,继续比较。当遇到比基准值小的数(*right<record),就将right指针所指向的值赋原创 2020-07-13 17:36:03 · 876 阅读 · 0 评论 -
最小生成树——c语言
#include <stdio.h>#define max 100#define mc 10000000#define false -1typedef struct{ //定义图 char vex[max]; int arc[max][max]; int vexnum,arcnum;}AmGraph; int locatedv(AmGraph G,char a) /...原创 2020-03-12 17:45:07 · 365 阅读 · 0 评论 -
最短路径——迪杰斯特拉 c语言
#include <stdio.h>#define max 100#define mn 100000 //权最大值 #define false -1typedef struct{ //定义图 char vex[max]; int arc[max][max]; int vexnum,arcnum; }AmGraph;int locatedv(AmGraph G,ch...原创 2020-03-12 17:43:39 · 242 阅读 · 0 评论 -
关键路径——c语言
#include <stdio.h>#define max 100#define mc 10000000#define false -1#define ok 1typedef struct{ //定义图 char vex[max]; int arc[max][max]; int vexnum,arcnum;}AmGraph; int locatedv(AmGrap...原创 2020-03-12 17:42:44 · 279 阅读 · 0 评论 -
顺序表--队列C语言的基本操作
队列也是操作受限的线性表,采用先进先出的方式队列也有两种存储方式分别为顺序顺序和链式存储队列的顺序表示–使用一位数组下面是队列的定义循环队列在逻辑上实现了头尾相连,不会出现假溢出#define QElemtype int#define maxsize 100typedef struct { QElemtype *base;//数组 int front ;//头指针 int r...原创 2019-10-31 21:06:46 · 199 阅读 · 0 评论 -
顺序表--栈C语言的基本操作
栈是一种操作受限的线性表,至允许在栈顶(即表尾,Top)进行插入,删除操作:另一端成为栈底(即表头,Base),即先进后出插入元素也叫“入栈,压栈”,删除元素也叫“出栈,弹出”下面是栈的定义#define Elemtype int#define maxsize 100typedef struct Stack{ Elemtype *top; //栈顶指针,进行插入和删除 Elemty...原创 2019-10-15 20:01:24 · 212 阅读 · 0 评论 -
顺序表--单链表,双向链表的c语言的基本操作
链表由各个结点链接而成结点=数据域+指针域(数据域存储存储数据,指针域存储下一结点的地址)头指针指向头结点,头结点不存储数据,首元结点为第一个保存数据的结点下面是单链表用c语言表示的代码typedef struct Lnode{ //声明结点的类型和指向结点的结点类型 Elemtype data; //结点的数据域,Elemtype为自己使用typedef定义的数据类型 struc...原创 2019-10-14 17:37:05 · 285 阅读 · 0 评论 -
线性表--顺序表c语言的基本应用代码
线性表的定义:线性表是最基本、最简单、也是最常用的一种数据结构。表头具有唯一一个后继,表尾有唯一一个前驱,表中的元素存在唯一的前驱和后继。是一对一的关系从数学角度来讲,树结构和散结构都是图的特例,表结构又是树的特例 (运用到离散数学的知识)无回路的连通图就是树散结构就是对应的只含有顶点而没有边的“空图”;线性表也可以看作是“一元树”;线性表静态时可以理解为数组,动态时可以看作是链表例如...原创 2019-09-27 10:59:41 · 282 阅读 · 0 评论