数据结构01 栈及其应用 数据结构是一种在程序中系统化管理数据集合的形式。它通常由以下3个概念组合而成: 数据集合:通过对象数据的本体(例如数组和结构体)保存数据集合 规则:保证数据集合按照一定规矩进行正确操作、管理和保存的规则(例如按照顺序取出数据) 操作:增、删、改、查等对数据集合的操作 我们今天主要讲解的是栈(Stack)的操作 栈是一种线性数据结构,栈的特征是数据的插入和删除只能通过一端来实现,这一端称为“栈顶”, 数据结构 bigbigli 2024-06-12 17707 热度 9评论
数据结构02 队列及其应用 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,前端一般叫做队头,后端叫队尾。队列就像学校做操站队一样,来的人一个一个往后站,走的时候从前往后一个一个走。 总结队列的特点为:先入先出,即先入队的元素先出队。 对于队列的使用,我们可以直接利用数组来模拟队列的基本操作,具体实现如下: int que; //定义一个能存放10 数据结构 bigbigli 2024-06-12 1374 热度 0评论
数据结构03 链表及其操作 链表的种类较多,这里我们主要讲解最常见的带头结点的单链表。 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 如图所示,链表中每个数据的存储都由以下两部分组成: 1.数据元素本身,其所在的区域称为数据域; 2.指向直接后继元素的指针,所在的区域称为指针域; 1.头结点:头节点是一个不存储任何数据的结点,是为了方便找到链表位置。 2.首元结点:它是链 数据结构 bigbigli 2024-06-12 1216 热度 0评论
数据结构04 动态数组vector vector翻译为向量,但是这里使用“变长数组”的叫法更容易理解,也即“长度根据需要而自动改变的数组”。 在考试题中,有时会碰到只用普通数组会超内存的情况,这种情况使用vector会让问题的解决便捷许多。 另外, vector还可以用来以邻接表的方式储存图,这对无法使用邻接矩阵的题目(结点数太多)、又害怕使用指针实现邻接表的读者是非常友好的写法也非常简洁。 如果typename 是vector 数据结构 bigbigli 2024-06-12 920 热度 0评论
数据结构05 链表list 由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器 优点:采用动态存储分配,不会造成内存浪费和溢出。 链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素。 缺点:list链表遍历速度不快,同时占用空间大。 与vector容器相比,因为不用保持内存空间的连续性,所以list的插入删除更为方便快捷。但是list容器所占用的内存空间比ve 数据结构 bigbigli 2024-06-12 695 热度 0评论
数据结构06 树与二叉树 树是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。 例如我们生活中的家族族谱、公司组织结构图等都是树结构。如下图所示,即为一棵树 。 下面我们根据上图来了解一下树的相关概念: 树的结点:使用树结构存储的每一个数据元素都被称为“结点”。例如,图中,数据元素 A 就是一个结点; 父结点(双亲结点)、子结点和兄弟结点:对于图中的结点 A、B、C、D 来说,A 是 B、C、D 结点的父结 数据结构 bigbigli 2024-06-12 1117 热度 2评论