当前位置:首页 > 编程笔记 > 正文
已解决

五、 栈和队列

来自网友在路上 171871提问 提问时间:2023-11-05 00:12:48阅读次数: 71

最佳答案 问答题库718位专家为你答疑解惑

一、栈和队列的定义

栈是先进后出,队列是先进先出

栈的相关操作:

stack<Type> stack_name;
.push(element) 压入栈顶
.pop() 弹出栈顶
.top() 返回栈顶元素的引用
.empty() 栈为空返回true,否则返回false

队列的相关操作:

queue<T> queue_name;
.push(element) 插入队列末尾
.pop() 移除队列的第一个元素
.front() 返回队列的第一个元素的引用
.empty() 如果队列为空,则返回true,否则返回false

二、题目1 用两个栈实现队列

用两个栈实现一个队列

class MyQueue {
private:stack<int> inStack, outStack;void in2out() {while ( !inStack.empty()){outStack.push(inStack.top());inStack.pop();}}
public:MyQueue() { }void push(int x) {inStack.push(x);}int pop() {if (outStack.empty()) {in2out();}int x = outStack.top();outStack.pop();return x;}int peek() {if (outStack.empty()) {in2out();}int x = outStack.top();return x;}bool empty() {return outStack.empty()&&inStack.empty();}
};

三、题目2 用两个队列实现栈

class MyStack {
private:queue<int> queue1;queue<int> queue2;
public:MyStack() {}void push(int x) {queue1.push(x);while (!queue1.empty()){queue2.push(queue1.front());//获取队列的第一个元素queue1.pop();}swap(queue1, queue2);}int pop() {int r = queue1.front();queue1.pop();return r;}int top() {int r = queue1.front();return r;}bool empty() {return queue1.empty();}
};
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"五、 栈和队列":http://eshow365.cn/6-32267-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!