题目:
要求实现一个队列类,队列底层由两个栈实现。
题目解析:
这道题很简单,只有一个关键点。涂鸦了一个图,关键点只有在stack2为空时,才能将stack1内的数据导入stack2。
Okay,no code say what?示意代码:
template <class Type>
class QueueEx {
private:
stack<Type> m_stackPush;
stack<Type> m_stackPop;
public:
QueueEx() {};
~QueueEx() {};
void push(Type &element) {
if (m_stackPop.empty()) {
m_stackPop.push(element);
}
};
void pop() {
if ((m_stackPop.empty()) {
while (!m_stackPush.empty()) {
Type &tmp = m_stackPush.top();
m_stackPop.push(tmp);
m_stackPush.pop();
}
}
m_stackPop.pop();
};
Type &front() {
if ((m_stackPop.empty()) {
while (!m_stackPush.empty()) {
Type &tmp = m_stackPush.top();
m_stackPop.push(tmp);
m_stackPush.pop();
}
}
m_stackPop.top();
};
Type &back() {
if (m_stackPush.empty()) {
if (m_stackPush.empty()) {
return m_stackPush.back();
} else {
while (!m_stackPop.empty()) {
Type &tmp = m_stackPop.top();
m_stackPush.push(tmp);
m_stackPop.pop();
}
return m_stackPush.back();
}
} else {
m_stackPush.top();
}
};
bool empty() {
return m_stackPush.empty() && m_stackPop.empty();
};
size_t size() {
return m_stackPush.size() && m_stackPop.size();
};
};
----------
okay,路漫漫其修远兮,吾将上下....