您的位置:首页 > 理论基础 > 数据结构算法

数据结构和算法经典100题-第26题

2015-12-28 10:04 603 查看
题目:

要求实现一个队列类,队列底层由两个栈实现。

题目解析:

这道题很简单,只有一个关键点。涂鸦了一个图,关键点只有在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,路漫漫其修远兮,吾将上下....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息