基础的数据结构
数据结构(英语:data structure)是计算机中存储、组织数据的方式。
数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素集合。它包含三方面的内容,逻辑关系、存储关系及操作。
常见的数据结构
数组(Array)
数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。有一维数组、二维数组和多维数组。
数组占用的内存是连续的。
对于C语言,实现二维(多维)数组的遍历时,采用行优先的编码实现,其性能更优。
链表(Linked List)
链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。
数组VS链表
存储同样的数据,数组占用空间比链表小。
遍历查找数据,数组性能更优(Cache机制),而且在特定场景下支持优化算法。
数组本身不具备扩容能力,实现扩容代价大,链表本身具备扩容能力,实现更为简单高效。
插入和删除中间节点,数组实现需要移动现有的数据,而链表实现更为简单高效。
栈(Stack)
栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。后进先出
栈是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地, 把另一端称为栈底。向一个栈插入新元素又称作进栈、 入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
除了栈的初始化(Initial)与销毁(Destroy)以外,栈需要具备2个基本操作,以及几个辅助功能
基本操作
入栈 :Push
出栈 :Pop
辅助功能
栈是否为空 :isEmpty
栈是否已满 :isFull
栈元素数量 :GetSize
栈可以可以通过数组或链表的方式来实现。如果 已知栈的最大容量,可以通过数组来实现更为简单。
数组实现的好处在于入栈出栈时不用动态分配内 存和释放内存,同时执行操作的性能较高,但是在栈初始化的时候需要一次性分配所需要的最大内存,这些内存在不使用的时候也会被占用。
当不确定栈的最大容量时,或者不想在初始化时 就分配大量内存,就可以通过链表的方式实现栈的功能。
队列(Queue)
队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。先进先出。
除了队列的初始化(Initial)与销毁(Destroy) 以外,队列需要具备3个基本操作,以及其他几个辅助功能:
基本操作
添加元素 :Add
删除元素:Delete
获取队首 :Front
辅助功能
队列是否为空 :isEmpty
队列是否已满 :isFull
队列元素数量 :GetSize
如同栈一样,队列可以通过数组或 链表的方式实现,两种方式的优劣与栈也相似。
智能云网
智能云网社区是华为专为开发者打造的“学习、开发、验证、交流”一站式支持与服务平台,该平台涵盖多领域知识。目前承载了云园区网络,云广域网络,数通网络开放可编程,超融合数据中心网络,数通网络设备开放社区共五个场景。为了响应广大开发者需求,还提供了开发者交流、API 体验中心、多媒体课件、SDK工具包、开发者工具以及远程实验室共六大工具,让开发者轻松开发。欢迎各位前来体验。《戳我了解更多》
- 点赞
- 收藏
- 关注作者
评论(0)