![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 67
不想变蠢的蠢
这个作者很懒,什么都没留下…
展开
-
内部排序之归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。归并排序基本思想设两个有序的子序列(相当于输入序列)放在同一序列中相邻的位置上:array[low..m],array[m + 1..high],先将它们合并到一个局部的暂存序列 temp (相当于输出序列)中,待合并完成后将 temp原创 2017-03-27 19:33:14 · 574 阅读 · 0 评论 -
内部排序之交换排序
目录快速交换排序简介及其代码冒泡交换排序及其代码交换排序总结快速排序简介及其代码我们知道假如一个已排好序的数组,假如是从小到大升序排列,则随便取其中一个数N,则N左边所有数都小于或等于N,右边的都大于或等于N.那反向思维下,我们先随便取数组第一个数为基准X,然后将所有小于它的数交换到左边,大于它的数交换到右边.最后X可能就被交换到中间某个位置.以X为分界线,数组被分成两部分.接着再对两部分重原创 2017-03-26 18:01:46 · 487 阅读 · 0 评论 -
内部排序之插入排序(直接插入排序,二分插入排序,希尔插入排序)
目录直接插入排序简介及其代码二分插入排序简介及其代码希尔插入排序简介及其代码插入排序总结直接插入排序简介及其代码简介: 直接插入排序过程: 代码块:#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100typedef int KeyType;typedef struct{ KeyType key;原创 2017-03-26 16:40:07 · 587 阅读 · 0 评论 -
栈之链栈
目录链栈的简介举例以及详细分析代码块测试结果链栈的简介链栈则没有上溢的限制,它就象是一条一头固定的链子,可以在活动的一头自由地增加链环(结点)而不会溢出,链栈不需要在头部附加头结点,因为栈都是在头部进行操作的,如果加了头结点,等于要在头结点之后的结点进行操作,反而使算法更复杂,所以只要有链表的头指针就可以了。举例以及详细分析**栈可以采用链式存储结构表示,采用这种结构表示的栈简称为链栈。原创 2017-03-26 11:17:09 · 423 阅读 · 0 评论 -
栈之顺序栈
目录顺序栈的简介举例以及详细分析代码块测试结果顺序栈的简介在顺序栈中有”上溢”和”下溢”的概念。顺序栈好比一个盒子,我们在里头放了一叠书,当我们要用书的话只能从第一本开始拿(你会把盒子翻过来吗?真聪明^^),那么当我们把书本放到这个栈中超过盒子的顶部时就放不下了(叠上去的不算,哼哼),这时就是”上溢”,”上溢”也就是栈顶指针指出栈的外面,显然是出错了。反之,当栈中已没有书时,我们再去拿,看原创 2017-03-26 11:07:06 · 939 阅读 · 0 评论 -
图的总括之存储和遍历
目录图的概念的基本术语图的存储结构之邻接矩阵存储图的存储结构之邻接表存储图的深度优先遍历(DFS)图的广度优先遍历(BFS)图的概念的基本术语图:由有穷、非空点集和边集合组成,简写成G(V,E); Vertex:图中的顶点;无向图:图中每条边都没有方向; 有向图:图中每条边都有方向;无向边:边是没有方向的,写为(a,b) 有向边:边是有方向的,写为《a,b》 有向边也成为弧;开始原创 2017-03-15 23:15:34 · 373 阅读 · 0 评论 -
树之二叉查找树(二叉搜索树)
目录二叉查找树简介二叉查找树举例以及详细分析代码块测试结果以及参考图纸二叉查找树二叉树的一个重要的应用是它们在查找中的使用。使二叉树成为查找树的性质是,对于树中的每个结点X,它的左子树中所有关键字值小于X的关键值,而它的右子树中所有关键字大于X的关键值。在图1中,左边的树是二叉查找树,但右边的树则不是(想一想为什么)。 二叉查找树举例以及详细分析二叉查找树定义:又称为是二叉排序树(Bin原创 2017-03-22 21:53:51 · 473 阅读 · 0 评论 -
树之完全二叉树(AVL树)
目录AVL树的简介AVL举例以及详细分析代码块测试结果和参考图纸备注AVL树的简介AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。 它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于”二叉查找树”,它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复原创 2017-03-22 20:52:01 · 3202 阅读 · 1 评论 -
双向链表
双向链表简介和举例解析双链表结构体的定义1: 结构体: 主函数中: 调用函数中:双链表结构体的定义2: 结构体: 主函数中: 调用函数中:头插法:尾插法:双向链表代码1#include <stdio.h>#include <malloc.h>#define true 1#define false 0typedef int bool;typedef int ElemType;t原创 2017-03-28 23:39:41 · 1117 阅读 · 0 评论 -
图之从一个顶点到其余各个顶点的最短路径(有向图)
目录从一个顶点到其余各个顶点最短路径的简介举例以及详细分析代码块测试结果从一个顶点到其余各个顶点最短路径的简介1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,原创 2017-03-21 22:55:57 · 22929 阅读 · 2 评论 -
图的最小生成树算法
目录图的最小生成树算法之Prim算法简介Prim算法举例及其详解Prim代码块图的最小生成树算法之Kruskal算法简介Kruskal算法举例及其详解Kruskal代码块图的最小生成树算法之Prim算法简介1、生成树 如果连通图G的一个子图是一棵包含G的所有顶点的树,则该子图称为G的生成树(SpanningTree)。 生成树是连通图的包含图中的所有顶点的极小连原创 2017-03-20 23:25:11 · 933 阅读 · 0 评论 -
链表之单链表
链表表示方法方法1: 结构体: 主函数中: 调用函数中:方法2:(这里用的是栈的存储方式,但同样适用于链表) 结构体: 主函数中: 调用函数中:方法3: 结构体: 主函数中: 调用函数中: (这里的Status为 typedef int Status)单链表代码#include<stdio.h>#include<stdlib.h>struct student{原创 2017-03-28 11:46:56 · 346 阅读 · 0 评论 -
内部排序之选择排序(直接选择排序,堆排序)
目录堆排序简介及其代码直接选择排序简介及其代码选择排序总结堆排序简介及其代码1、首先明确完全二叉树概念: 深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。其次明确堆的概念: 堆是具有以下性质的完全二叉树,每个结点的值小于或等于其孩子结点的值(小根堆),每个结点的值大于或等于其孩子结点的值(大根堆)堆的定义如图所示:2、原创 2017-03-27 10:00:47 · 491 阅读 · 0 评论