数据结构与算法-基础(四)栈(Stack)
2021-09-19 15:00
681 查看
摘要
前几期探究过动态数组或者链表后,接下来的栈就可以使用线性表的结构再次封装实现。在实现栈 的时候发现,在线性表的基础上,实现起来更简单。
栈这种数据结构应用到很多场景,比如网页之间的跳转等。
栈的定义
栈是一种特殊的线性表,只能在一端进行操作。栈的主要特点有以下几点:
- 往栈中添加元素的操作,叫作入栈(push)
- 从栈中移除元素的操作,叫做出栈(pop),只能移除栈顶元素
- 栈遵守的是原则是后进先出(Last In First Out,LIFO)
栈的接口设计
根据栈的特点,可以设计栈的相关接口:
函数 | 释义 |
---|---|
int size(); |
元素的数量 |
boolean isEmpty(); |
是否为空 |
void push(E element); |
入栈 |
E pop(); |
出栈 |
E top(); |
获取栈顶元素 |
void clear(); |
清空 |
- E 为泛型类型
栈的内部实现可以用动态数组或者链表。
栈的代码实现
这里是通过动态数组实现栈相关。
/** * 栈结构 */ public class Stack<E> { private List<E> list = new ArrayList<>(); /** * 元素数量 * @return */ int size() { return list.size(); } /** * 是否是空 * @return */ boolean isEmpty() { return list.isEmpty(); } /** * 入栈 - 给列表添加元素 * @param element */ void push(E element) { list.add(element); } /** * 出栈 - 移除列表中最后一个元素 * @return */ E pop() { return list.remove(list.size() -1); } /** * 获取栈顶元素 - 获取列表最后一个元素 * @return */ E top() { return list.get(list.size() -1); } /** * 清空 */ void clear() { list.clear(); } }
相关文章推荐
- 【数据结构与算法基础】栈及其应用后缀、中缀表达式 / Stack and postfix/infix expression
- 数据结构基础(二):算法
- 笔试、面试重点总结:算法基础、数据结构
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 算法——数据结构基础(数组、队列、栈、链表、散链表)
- 算法竞赛入门经典:第六章 数据结构基础 6.10黑白图像
- 数据结构基础:栈(Stack)
- 算法与数据结构基础(四)高级排序算法2.快速排序
- ZH奶酪:【数据结构与算法】并查集基础
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- .net 数据结构与算法基础:Hashtable
- 数据结构基础温故-5.图(中):图的遍历算法
- 基础算法(二)---数据结构之图
- 数据结构和算法 (二)数据结构基础之树、二叉树
- Uva 算法入门经典(数据结构基础)线性表题目
- 【重点,要考的】数据结构及算法基础--哈希图(HashMap)
- 算法与数据结构基础8:C++实现有向图——邻接表存储
- 数据结构与算法之基础篇
- 数据结构基础算法整理归纳:二分查找算法(一)
- .net 数据结构与算法基础:泛型编程、时间测试