数据结构概述
栈
栈概述:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。
-
特点:
- 先进后出,后进先出
- 元素先存储栈,后取出
- 元素后存储栈,先取出
-
相关术语:
- 存入元素:进栈,压栈
- 取出元素:出栈,弹栈
图解:
队列
概述:queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在 表的一端进行插入,而在表的另一端进行删除。
-
特点:
- 先进先出,后进后出
- 队列的入口、出口各占一侧。
-
相关术语:
存入元素:入队
取出元素:出队
图解:
数组
概述:是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。
-
特点:
- 数组存储元素的空间,在内存中是相邻连续的,所以数组中的元素是有序的
- 数组存储元素,查询元素的效率高
-
数组存储元素,增加删除元素效率低
原因:数组本身大小是固定的,不能直接新增或者删除元素。
如果需要向数组中新增元素,需要先对数组实现扩容,然后再将之前数组的值全部拷贝到新数组中,然后在指定的位置添加新元素。
如果需要删除某一个元素,需要让当前元素后面的每一个值都往前移动,移动之后,再将最后空出来的空间隐藏掉。
链表
链表:linkedlist,链表中的每一个元素(节点)都是有一个Node对象组成
-
特点:
-
每一个节点由两部分组成:数据域、指针域
-
节点之间也是有序连接,所以链表存储元素也是有序的
-
链表查询元素效率低
-
链表增加或者删除元素效率高
-
链表有两种分类:
-
双向链表:当前节点中,既记录了上一个元素的地址,也记录了下一个元素地址
-
单向链表:当前节点只记录下一个元素的地址,没有记录上一个元素的地址
-
-
图示:
录下一个元素的地址,没有记录上一个元素的地址