堆栈和队列模拟
Main.java
public class Main {public static void main(String[] args) {System.out.println("===== 测试堆栈(Stack)功能 =====");TestQueue.test();System.out.println("\n===== 测试队列(Queue)功能 =====");TestStack.test();}
}
LinkedList.java
public class LinkedList {}
Queue.java
import java.util.LinkedList;/** 队列(双端队列):* offer()* poll()* **/
class Queue{LinkedList list;public Queue(){list = new LinkedList();}public void add(Object o){list.offer(o);}public void remove(){list.poll();}public int size(){return list.size();}
}
Stack.java
import java.util.LinkedList;/** 栈:主要是用于堆栈数据结构的存储方式。* 先进后出* push()* pop()* */class Stack{LinkedList list;public Stack() {list = new LinkedList();}// 进栈public void push(Object o) {list.push(o);}public void pop() {list.pop();}// 获取元素个数public int size() {return list.size();}
}
TestQueue.java
class TestQueue {public static void test() {Queue queue = new Queue();// 添加元素queue.add(10);queue.add(20);queue.add(30);System.out.println("当前队列大小: " + queue.size());// 移除元素System.out.println("移除元素: ");while(queue.size() > 0) {queue.remove(); }System.out.println("移除后队列大小: " + queue.size());}
}
TestStack.java
class TestStack {public static void test() {Stack stack = new Stack();// 压入元素stack.push("第一");stack.push("第二");stack.push("第三");System.out.println("当前栈大小: " + stack.size());// 弹出元素System.out.println("弹出元素: ");while(stack.size() > 0) {stack.pop(); }System.out.println("弹出后栈大小: " + stack.size());}
}
结果