JAVA 100道题(14)

14.编写一个程序,使用LinkedList实现一个简单的堆栈(Stack)数据结构。

堆栈(Stack)是一种遵循后进先出(LIFO,Last In First Out)原则的数据结构。下面是一个使用Java的LinkedList类来实现堆栈的简单示例:

复制代码

java复制代码

|---|-----------------------------------------------------------------|
| | import java.util.LinkedList; |
| | |
| | public class Stack<T> { |
| | private LinkedList<T> list; |
| | |
| | public Stack() { |
| | list = new LinkedList<>(); |
| | } |
| | |
| | // 入栈操作 |
| | public void push(T item) { |
| | list.addFirst(item); |
| | } |
| | |
| | // 出栈操作 |
| | public T pop() { |
| | if (isEmpty()) { |
| | throw new RuntimeException("Stack is empty"); |
| | } |
| | return list.removeFirst(); |
| | } |
| | |
| | // 查看栈顶元素 |
| | public T peek() { |
| | if (isEmpty()) { |
| | throw new RuntimeException("Stack is empty"); |
| | } |
| | return list.getFirst(); |
| | } |
| | |
| | // 检查栈是否为空 |
| | public boolean isEmpty() { |
| | return list.isEmpty(); |
| | } |
| | |
| | // 获取栈的大小 |
| | public int size() { |
| | return list.size(); |
| | } |
| | |
| | public static void main(String[] args) { |
| | Stack<Integer> stack = new Stack<>(); |
| | |
| | // 入栈操作 |
| | stack.push(1); |
| | stack.push(2); |
| | stack.push(3); |
| | |
| | System.out.println("Stack size: " + stack.size()); |
| | |
| | // 查看栈顶元素 |
| | System.out.println("Top element: " + stack.peek()); |
| | |
| | // 出栈操作 |
| | System.out.println("Popped element: " + stack.pop()); |
| | |
| | System.out.println("Stack size after pop: " + stack.size()); |
| | } |
| | } |

在这个程序中,我们定义了一个泛型类Stack<T>,它使用LinkedList作为内部存储结构。push方法用于将元素添加到栈顶,pop方法用于从栈顶移除并返回元素,peek方法用于查看栈顶元素但不移除它,isEmpty方法用于检查栈是否为空,size方法用于获取栈的大小。

main方法中,我们创建了一个Stack<Integer>对象,并进行了入栈、查看栈顶元素和出栈操作

相关推荐
better_liang1 分钟前
每日Java面试场景题知识点之-JUC锁的底层原理
java·并发编程·juc·锁机制·reentrantlock·readwritelock·底层原理
郝学胜-神的一滴3 分钟前
Python数据封装与私有属性:保护你的数据安全
linux·服务器·开发语言·python·程序人生
悟能不能悟5 分钟前
Elastic Stack 中两种主要查询语言 KQL (Kibana Query Language) 和 Lucene 的详细对比和解释。
java·开发语言
智航GIS10 分钟前
11.7 使用Pandas 模块中describe()、groupby()进行简单分析
python·pandas
我是一只小青蛙88811 分钟前
Java连接MySQL数据库实战指南
java
Pyeako15 分钟前
机器学习--矿物数据清洗(六种填充方法)
人工智能·python·随机森林·机器学习·pycharm·线性回归·数据清洗
夏末47220 分钟前
Java异常处理终极指南:从入门到企业级实战,让程序稳如老狗!
java·java ee
子非鱼92124 分钟前
SpringBoot快速上手
java·spring boot·后端
techzhi28 分钟前
Apifox CLI + GitLab CI:接口自动化测试实施记录
java·ci/cd·kubernetes·gitlab·yapi·运维开发·fastapi
我爱娃哈哈37 分钟前
SpringBoot + XXL-JOB + Quartz:任务调度双引擎选型与高可用调度平台搭建
java·spring boot·后端