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