⚠️注意:依靠栈实现队列的功能一定要使用两个栈。而队列实现栈功能一个队列即可。
1⃣️使用队列实现栈功能
import java.util.ArrayDeque;
import java.util.Queue;
/*
方法:可以使用链队来实现,也可以使用ArrayDeque来实现。
*/
public class MyStack {
Queue queue = new ArrayDeque<>();
private H topPointer = null;
public void push(H i) {
queue.offer(i);
topPointer = i;
}
public H pop() {
int size = queue.size();
while (size > 1) {
queue.add(queue.poll());
size--;
}
//保证top指针指向的永远是栈顶,此时还没删除栈顶元素
topPointer = queue.peek();
return queue.poll();
}
//注意getTop返回栈顶元素而不是指针
public H getTop() {
return topPointer;
}
public boolean isEmpty() {
if (queue.isEmpty())
return true;
return false;
}
}
2⃣️使用栈实现队列功能
这篇博客探讨了如何使用Java的ArrayDeque实现栈和队列的功能。文章详细介绍了如何利用队列模拟栈的push、pop、getTop和isEmpty操作,以及如何用两个栈实现队列的入队和出队功能。这种方法对于理解和掌握数据结构的灵活性有很好的帮助。
273

被折叠的 条评论
为什么被折叠?



