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>对象,并进行了入栈、查看栈顶元素和出栈操作

相关推荐
用户298698530143 小时前
Word 文档字符级格式化:Java 实现方案详解
java·后端
曲幽3 小时前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
笨鸟飞不快4 小时前
从单个服务到集群:一次完整的性能排查复盘
java·前端
荣码4 小时前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
SamDeepThinking4 小时前
Java微服务练习方式
java·后端·微服务
兵慌码乱13 小时前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
朦胧之14 小时前
AI 编程-老项目改造篇
java·前端·后端
金銀銅鐵15 小时前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio19 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
程序猿大帅19 小时前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java