数据结构
文章平均质量分 85
DRZ_2000
在美丽的北国重镇哈尔滨,有一座神秘院校。。。
哈哈哈,有懂的小伙伴吗?
(保研了,读硕士了,加油,好好干,未来可期)
展开
-
AVL平衡二叉排序树 (C语言)
文章目录一 前言二 平衡二叉排序树阐述1. 二叉排序树的不足2. 平衡二叉排序树的性质3. 平衡二叉排序树效率分析4. 左旋、右旋以及四种失衡类型一 前言 在了解平衡二叉排序树前,请大家务必掌握 BS二叉排序树的相关概念,关于二叉排序树的代码实现,小编另一篇博客: 二叉排序树结点的插入与删除操作 中有详细介绍,此处不再赘述,咱们直奔主题!!!二 平衡二叉排序树阐述1. 二叉排序树的不足...原创 2020-04-24 10:32:41 · 763 阅读 · 1 评论 -
堆排序和优先队列
堆和优先队列一 引子 相信大家都接触过二叉树,而二叉树中有一个特殊的树——完全二叉树,若我们从上到下,从左到右,将每一个结点从1开始编号,完成后,我们可以得到这样一个规律:若某个结点的编号是 i,那该结点的左孩子的编号是2 * i,右孩子的编号是 2 * i + 1,为此我们可以用数组来存储这棵完全二叉树。 示意图如下:了解完全二叉树的这个性质之后,我们接着来了解堆排序和优先队列...原创 2020-04-24 10:50:34 · 331 阅读 · 0 评论 -
C语言实现循环队列的构建、入队、出队、扩容、遍历等操作
C语言实现循环队列的构建、入队、出队、扩容、遍历等操作一 队列的定义和初始化 在C++的STL中有queue可以直接使用,小编这里采用C语言实现队列的基本操作,毕竟学会自己“造轮子”而不是拿来主义,可以更深刻的体会队列的性质。 队列最大的性质就是先进先出,元素只可以从队尾入队,从队首出队列。至于队列和循环队列之间的区别,不及,我们后面会说。 话不多说,我们直接看数据结构定义:typ...原创 2020-03-02 20:34:56 · 2339 阅读 · 0 评论 -
C语言实现栈的构建、入栈、出栈、取栈顶元素等基本操作
C语言实现栈的构建、入栈、出栈、取栈顶元素等基本操作一 栈的定义 在文章的开头,小编强调一句:小编知道C++的STL中有现成的stack,可以直接拿来用,但是这里小编还是用C语言来实现stack的基本操作,请大家不要喷小编,小编伤不起呀!!! 栈最重要的性质是:后进先出。性质大家都知道,关键是如何运用栈后进先出的性质解决题目。 好了,话不多说,咱们直接进入正题,其结构定义如下:ty...原创 2020-03-02 17:20:06 · 8855 阅读 · 1 评论 -
插入、冒泡、归并、选择、快速排序算法以及二分、三分查找算法
六种排序与两种查找算法一 排序算法 (此处的排序均为升序排列) 排序算法总的来说可以分成内部排序和外部排序 (内外是相对内存而言的,对于内部排序算法,它需要将数据全部加载入内存,才可以进行排序,而外部排序可以将数据分批加载进入内存,进行排序,比如:归并排序); 此外排序算法还可以分为稳定排序和非稳定排序 (若之前A(i) == A(j) && i < j,那...原创 2020-02-28 17:19:52 · 704 阅读 · 0 评论 -
二叉排序树结点的插入与删除操作
二叉排序树结点的插入与删除操作一 二叉排序树的性质 二叉排序树,又称二叉搜索树,它最重要的性质就是:根结点左子树中所有结点的值均小于根结点值,右子树中所有结点的值都大于根结点的值,所以我们在中序遍历这棵二叉树时,将会得到一个升序序列,这也是我们验证二叉排序树的一个手段。 对应的数据结构定义为:typedef struct Node { //一个数据域和左右两个指针域 int ...原创 2020-02-28 10:48:57 · 4983 阅读 · 1 评论 -
二叉树的构建、遍历、转广义表等基本操作
二叉树的构建、遍历、转广义表等基本操作一 结构定义 二叉树我们可以分成两个部分:结点和边,这一点和图是一样的,其中结点代表事件,那么边就代表着事件之间的关系。 此外,每一个结点我们都可以看成其左右子结点的并集;换句话说,一个结点的左右孩子结点取并集,那么并集就可以代表这个结点;因此我们不难得到:树 这种数据结构对应的是一系列完全包含关系 (这一点很重要)。 此外之前我们说过有一种数据...原创 2020-02-27 14:34:26 · 752 阅读 · 0 评论 -
链表实现增删改查等基本操作
链表实现增删改查等基本操作当数据结构是线性结构时,我们可以用顺序表或者是链表实现,上一篇我们用顺序表实现,这一次我们用链表实现。首先为了便于程序的演示以及说明,我们先定义相应的数据结构如下:typedef struct ListNode { //链表结点对应的结构体,包含数据域和指向下一个结点的指针域 int data; struct ListNode *next;} ...原创 2020-02-12 13:50:48 · 1009 阅读 · 0 评论 -
线性表实现增删改查等基本操作
线性表实现 增删改查 等基本操作当数据结构是线性结构时,我们可以用顺序表或者是链表实现,此处我们先讨论顺序表的一些基本操作首先为了便于程序的演示以及说明,我们先定义相应的数据结构如下:typedef struct Vector { int size, length; //顺序表的总体大小以及现有长度 int *data; //data指向存储数据数组的首地址...原创 2020-02-03 18:32:45 · 2416 阅读 · 0 评论