建设银行手机银行官方网站下载,最新军事新闻最新消息视频,如皋网站建设公司,邢台做网站可信赖在计算机科学中#xff0c;栈是一种数据结构#xff0c;它遵循后进先出#xff08;LIFO#xff09;的原则。这意味着最后一个被添加到栈的元素将是第一个被移除的元素。然而#xff0c;Java的标准库并没有提供栈的实现#xff0c;但我们可以使用两个队列来模拟一个栈的行…在计算机科学中栈是一种数据结构它遵循后进先出LIFO的原则。这意味着最后一个被添加到栈的元素将是第一个被移除的元素。然而Java的标准库并没有提供栈的实现但我们可以使用两个队列来模拟一个栈的行为。
首先我们需要创建一个名为MyStack的类该类包含两个栈queue1和queue2。这两个栈将用于实现队列的功能。接下来我们需要实现队列的基本操作包括push、pop、peek和empty。
首先我们需要创建一个栈类
public class MyStack {QueueInteger queue1;QueueInteger queue2;public MyStack(){queue1 new LinkedList();queue2 new LinkedList();}
}
push方法
push(int value): 将一个元素添加到栈中。首先我们将该元素添加到queue2中。然后我们将queue1中的所有元素移动到queue2中直到queue1为空。最后我们交换queue1和queue2的角色使得queue1始终是栈顶元素所在的队列。
public void push(int value){queue2.offer(value);while (!queue1.isEmpty()){queue2.offer(queue1.poll());}QueueInteger temp queue1;queue1 queue2;queue2 temp;}
pop方法
pop(): 从栈中移除并返回栈顶元素。由于栈顶元素位于queue1中我们只需调用queue1.poll()即可。
public int pop(){return queue1.poll();}
top()方法
top(): 返回栈顶元素但不将其从栈中移除。由于栈顶元素位于queue1中我们只需调用queue1.peek()即可。
public int top(){return queue1.peek();}
isEmpty方法
isEmpty(): 检查栈是否为空。我们只需检查queue1是否为空即可。
public boolean isEmpty(){return queue1.isEmpty();}
完整代码
public class MyStack {QueueInteger queue1;QueueInteger queue2;public MyStack(){queue1 new LinkedList();queue2 new LinkedList();}public void push(int value){queue2.offer(value);while (!queue1.isEmpty()){queue2.offer(queue1.poll());}QueueInteger temp queue1;queue1 queue2;queue2 temp;}public int pop(){return queue1.poll();}public int top(){return queue1.peek();}public boolean isEmpty(){return queue1.isEmpty();}}
测试类
public class Test {public static void main(String[] args) {MyStack myStack new MyStack();System.out.println(myStack.isEmpty()); // truemyStack.push(1);myStack.push(2);myStack.push(3);System.out.println(myStack.pop()); // 3System.out.println(myStack.pop()); // 2System.out.println(myStack.isEmpty()); // falseSystem.out.println(myStack.pop()); // 1System.out.println(myStack.isEmpty()); // true}
}
运行结果