用栈实现队列(java)
2023-12-31 14:48:52
仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push
、pop
、peek
、empty
):?
实现?MyQueue
?类:
void push(int x)
?将元素 x 推到队列的末尾int pop()
?从队列的开头移除并返回元素int peek()
?返回队列开头的元素boolean empty()
?如果队列为空,返回?true
?;否则,返回?false
class MyQueue {
//首先创建两个栈
private Stack<Integer> s1;
private Stack<Integer> s2;
public MyQueue() {
s1 = new Stack<>();
s2 = new Stack<>();
}
public void push(int x) {
s1.push(x);//入队:把数据放入第一个栈中
}
public int pop() {//出队:出s2这个栈中的栈顶元素,如果s2为空,把s1中的所有元素都放入s2中
if(empty()) {
return -1;
}
if (s2.empty()) {
while(!s1.empty()) {
s2.push(s1.pop());
}
}
return s2.pop();
}
public int peek() {
if(empty()) {
return -1;
}
if (s2.empty()) {
while(!s1.empty()) {
s2.push(s1.pop());
}
}
return s2.peek();
}
public boolean empty() {//当两个栈都为空说明队列为空
return (s1.isEmpty() && s2.isEmpty());
}
}
文章来源:https://blog.csdn.net/weixin_69762204/article/details/135315399
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!