常见数据结构(一)
编辑线性表(Liner List)
线性表是最基本的一种数据结构,是 n 个具有相同特征的数据元素的有限序列。
从逻辑上称(不考虑物理存储),表中元素是相邻的,相邻元素之间存在序偶关系,表头有且仅有一个直接后继,表尾有且仅有一个直接前驱,其他元素有且仅有一个直接后继和一个直接前驱。
从物理存储考虑,线性表区分顺序存储和链式存储,链式存储又可以细分为单向链表、双向链表、循环链表等。
线性表
|----- 顺序存储
|----- 链式存储
|--------- 单项链表
|--------- 双向链表
|--------- 循环链表
|--------- 其他
顺序存储
用一组地址连续的存储单元依次存储表中的数据元素,元素之间的物理位置相邻。
链式存储
链表由一个或多个节点组合而成,节点由两部分构成(数据域和指针域),一般物理存储单元并非连续,而是由指针域(存储下一个节点的地址)将多个节点连接,是逻辑上的线性表。
栈(Stack)
栈是限定仅在表尾执行插入或删除的线性表。对于栈来说,表尾是栈顶,表头是栈底,因为只能在栈顶进行插入或删除,也称 后进先出(LIFO)
线性表。
JVM 内存模型中,有一个 虚拟机栈
,其数据结构如此,描述着 Java 方法执行的内存模型。当线程执行到每个方法时,都会创建一个栈帧压栈,每个方法从调用到执行完成的过程,都对应着一个栈帧从入栈到出栈的过程,而栈顶即对应着当前正在执行的方法。
队列(Queue)
队列是限定仅在表尾执行插入、表头执行删除的线性表。对于队列来说,表尾是队尾,表头是队头,因为只能在表尾插入、表头删除,也称 先进先出(FIFO)
线性表。
数组
区别于编程语言中的具体数据类型,数组与顺序表、链表、栈、队列一页,是一种用来存储具有“一对一”逻辑关系的线性存储结构。不仅如此,数组和其他线性存储结构不同,数组既可以存储不可再分的数据元素,同时也可以用来存储像顺序表、链表这样的数据结构。
比如,数组可以直接存储多个顺序表,又因为顺序表底层的实现还是数组,因此等价于数组中继续存储数组。
因此,一维数组结构是线性存储结构的基本表现形式,而多维数组是对线性存储结构的一种扩展。
一维数组
二维数组
- 0
- 0
-
分享