栈(Stack)
定义
栈是一种操作受限的线性数据结构,遵循**先进后出(LIFO, Last In First Out)**原则。
核心特性
- 只能在栈顶插入和删除元素
- 类比:一摞盘子,最后放的在最上面,最先被拿走
基本 API
| 方法 | 描述 | 时间复杂度 |
|---|---|---|
push(E e) |
向栈顶插入元素 | O(1) |
pop() |
从栈顶删除并返回元素 | O(1) |
peek() / top() |
查看栈顶元素(不删除) | O(1) |
size() |
返回栈中元素个数 | O(1) |
底层实现
- 基于数组实现:可使用动态数组,栈顶对应数组末尾,增删均为 O(1)
- 基于链表实现:使用双链表,可将头部或尾部作为栈顶,增删均为 O(1)(见用链表实现队列栈)