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

相关推荐
panxianren3 小时前
Bun 1.4 的 bun test --parallel 将 4 秒的测试套件缩短到约 1 秒
java·javascript
“AI国潮设计-小江”5 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
sunshine22 girl5 小时前
Java学习七 Java 项目实战2-注册业务
java·学习
wenwen_chao5 小时前
Python学习与开发资源合集:实用技巧与工具推荐
python
省钱兄--zs5 小时前
北京24小时自助健身房系统软件开发实战:从架构设计到部署指南
java·数据仓库·spring boot·小程序·需求分析
youdexiang6 小时前
Android录音软件时间关键词检索功能分析
java·人工智能
for_ever_love__6 小时前
函数——参数、lambda、*args与作用域
python·函数·大模型开发·编程基础
东莞市云毅网络有限公司6 小时前
企业资料时效性判定:Last-Modified、正文日期与版本字段三路交叉
python·sqlite·自动化运维·geo·数据监测
Query*6 小时前
深入浅出LangGraph【一】_基础篇
python·ai·langchain
sunshine22 girl6 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习