数据结构(C/C++语言)
文章平均质量分 96
介绍通过C语言实现的初级数据结构和C++语言实现的高级数据结构。
ARMCSKGT
不能用言语去表达,尽力用行动诠释一切!
展开
-
高阶数据结构 <红黑树>
红黑树是在1972年由发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被和修改为如今的“红黑树”。红黑树是二叉搜索树的一种,但是红黑树是性能最均衡应用场景最广的一种二叉搜索树,相对于AVL树来说,红黑树在旋转条件上并不是很严格,但是依然可以有非常出色的查找性能,这得益于红黑树的性质,本节将为大家介绍红黑树的基本性质。原创 2024-03-27 16:22:40 · 1673 阅读 · 68 评论 -
高级数据结构 <AVL树>
前面我们学习了二叉树,普通的二叉树没有任何特殊性质,所以后面我们又学习了二叉搜索树,这种有序的结构一定程度上优化了二叉树的性能,但是普通的二叉搜索树在特殊情况下,例如插入序列从大到小有序时,二叉搜索树会退化成类似于链表的单支数,此时性能变为O(n),为了解决这个问题,科学家在二叉搜索树的基础上再次进行升级,而有了我们现在常见的AVL树和红黑树,本节我们将介绍AVL树的基础性质。原创 2024-03-18 18:49:50 · 1385 阅读 · 53 评论 -
高级数据结构 <二叉搜索树>
前面我们学习了二叉树,但仅仅只是简单的二叉树并没有很大的用处,而本节的二叉搜索树是对二叉树的升级,其查找效率相对于简单二叉树来说有一定提升,二叉搜索树是学习AVL树和红黑树的基础,所以我们必须先了解二叉搜索树。本节我们介绍了二叉搜索树,讲解了二叉搜索树的相关概念,为后面AVL树和红黑树的学习做铺垫,本节我们只是实现了最基本的代码,在AVL树和红黑树中,我们将实现更多功能,来完善我们的二叉搜索树。原创 2023-12-23 10:18:05 · 7551 阅读 · 236 评论 -
数据结构初级<排序>
生活中需要排序得到结果的地方有很多,例如:购物时按商品销售量降序显示,班级的成绩排名,世界500强企业等等,我们在对这些数据进行排序时需要借助各种算法实现。本章将介绍常见的八大排序:直接插入排序,希尔排序,选择排序,堆排序,选择排序,冒泡排序,快速排序,二路归并排序,计数排序。原创 2023-01-19 14:30:51 · 3450 阅读 · 37 评论 -
数据结构初级<二叉树>
我们前面了解过二叉树的顺序结构那就是堆,但是二叉树的链式结构更重要,在以后的高级数据结构中AVL树,二叉搜索树等都是基于链式二叉树构建的,而且现在各大公司对于二叉树知识的考察也很频繁,所以掌握链式二叉树是必不可少的,学好了二叉树也能极大的锻炼我们对递归的理解!本篇我们介绍了二叉树的链式实现的相关操作,相对于前面的数据结构,二叉树的实现和理解明显要难一点,但是其应用也更多是我们必须掌握的,这是二叉树的基础知识,关于二叉树的学习还不止于此,还有更多高阶的二叉树我们后期会进行介绍!原创 2022-12-23 15:17:39 · 2886 阅读 · 20 评论 -
数据结构初级<堆>
堆这个数据结构可能大家都比较陌生,堆和二叉树有什么关系呢?大家根据字义可以想象出来“堆”就像一个小山坡一样,而二叉树从叶子节点一直到根节点也可以看作一个小山坡,两者很类似,于是二叉树的顺序结构存储方法就是堆。堆通常可以看作是二叉树的顺序结构表示。堆的实现一般使用顺序表(数组)来存储,而且堆存储的一定是完全二叉树,因为这样不会造成空间的浪费;建堆时要么建大堆要么建小堆,这样才能真真的利用堆的特性实现Top-K和堆排序问题。介绍了这里大家一定有些期待了吧?那就请大家继续向后阅览吧!原创 2022-12-20 22:08:13 · 3772 阅读 · 10 评论 -
数据结构初级<树和二叉树的概念>
前面我们介绍了线性表,线性表的元素相互之间存在一对一的关系,那么我们本篇将介绍非线性结构的一种“树”,以及树的常用形式“二叉树”的概念。本篇介绍了树和二叉树的相关概念,这对于我们后面实现二叉树以及分析二叉树的相关习题有极大的帮助,所以是我们必须了解和掌握的。本次队树和二叉树的概念介绍就到这里啦,希望能够尽可能帮助到大家。原创 2022-12-18 19:29:23 · 2755 阅读 · 8 评论 -
数据结构初级<循环队列>
前面我们介绍了队列,实现了队列的一些基本操作,这次我们对队列进行拓展,介绍循环队列(环形队列),循环队列如同一个环一样,是封闭的,且空间大小固定,循环队列中最大的问题就是假溢出问题,本章我们将逐一介绍。到这里循环队列的介绍就结束了,相信大家了解完循环队列以及其实现的两种结构一定收获满满,可以发现用顺序表和链表实现循环队列有不同的特性和高效之处,循环队列在计算机的操作系统课程中会提到生产者与消费者的关系,所以掌握循环队列也是非常重要的!本次队循环队列的基础知识介绍就到这里啦,希望能够尽可能帮助到大家。原创 2022-12-16 22:11:05 · 3081 阅读 · 8 评论 -
数据结构初级<队列>
大家看到文章的标题,可能会对队列有许多的联想,我们可以想象我们平时上学时大课间站队做操时的情景,先来的人站在最前面,后来的人依次在队尾向后站,数据结构中队列的性质也与此相似,这一节我们就来学习数据结构中的队列!这次我们介绍了特殊线性表之一队列,队列是一种特殊的线性表,队列的操作只能在队头和队尾,队列和栈一样常用于辅助一些其他的数据结构实现一些复杂的功能,看完本节相信大家对队列的操作已经有了一定的了解。本次队列的基础知识介绍就到这里啦,希望能够尽可能帮助到大家。原创 2022-12-15 21:29:25 · 2483 阅读 · 4 评论 -
数据结构初级<栈>
前面我们介绍了线性表的两种数据结构顺序结构和链式结构,这两种结构各有优劣,但是今天我们还有另一种数据结构,他是基于线性表衍生出来的特殊线性表,那就是“栈”,关于栈大家可能比较陌生,我们计算机程序在内存上运行时就会有许多栈帧,学完了这一节,大家对栈就会有一定的了解。学完了栈的基础知识,我们可以发现,栈这种数据结构在实现其简单功能非常简单,但是栈的作用一般是辅助其他数据结构实现更复杂的功能的角色,所以掌握栈的基础操作也非常重要!原创 2022-12-15 16:19:12 · 2649 阅读 · 3 评论 -
数据结构初级<带头双向循环链表>
前面我们介绍了线性表的两种基础结构顺序结构和链式结构,并且在链式结构中有两种常用的链表,一种是单链表,另一种是带头双向循环链表,本节我们就介绍单链表的满BUFF版,带头双向循环链表。原创 2022-12-11 19:59:46 · 2336 阅读 · 1 评论 -
数据结构初级<线性表之链表>
上一篇线性表的文章我向大家介绍了线性表的顺序结构并实现线性表的除了有顺序结构,还有另一种链式结构。可以发现链表确实像一条链子,链子上数据相互连接;但这是我们想象出来的逻辑结构,实际上链表中计算机中从物理结构并非如此,本期我们来详细介绍——链表。本次我们介绍了数据结构中的线性表的链式结构的一种,介绍了关于单链表增删查改等各种操作。相信到这里大家对单链表已经有了一定的认识,单链表在平时用到的还是非常多的,甚至还会配合顺序表一起使用。原创 2022-12-02 14:29:00 · 2415 阅读 · 5 评论 -
数据结构初级<线性表之顺序表>
初识数据结构,我们首先了解的数据结构就是线性表。线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构。常见的线性表:顺序表、链表、栈、队列、字符串等。线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以顺序结构(数组)和链式结构的形式存储。本次我们先介绍线性表的顺序结构-顺序表。原创 2022-11-24 18:37:16 · 3452 阅读 · 8 评论 -
C语言之数据结构初级<时间和空间复杂度>
在开始进入本节的介绍之前,我们需要了解数据结构是什么,我们都知道:“程序 = 数据结构+ 算法”。那么什么是数据结构?数据结构是计算机存储和组织数据的方式,数据元素之间存在一种或多种特定关系的数据元素的集合。什么是算法?我们解一道题所用到的过程和写下的解法就是算法,算法是用来实现某种功能的一块代码,专业一点说就是:程序取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。原创 2022-11-16 22:44:10 · 3022 阅读 · 12 评论