剑指offer--面试题9:用两个栈实现队列
2017-07-05 21:22
405 查看
#include <iostream> #include <stack> using namespace std; //***************数据结构******************* template<typename T> class CQueue{ public: CQueue(void); ~CQueue(void); void appendTail(const T& node); T deleteHead(); private: stack<T> stack1; stack<T> stack2; }; //*************实现**************************** template <typename T> CQueue<T>::CQueue(void) { } template <typename T> CQueue<T>::~CQueue(void) { } template<typename T> void CQueue<T>::appendTail(const T& node) { stack1.push(node); } template<typename T> T CQueue<T>::deleteHead() { if (stack2.size() <= 0) { if (stack1.size() <= 0) throw new exception("queue is empty"); while (stack1.size() > 0) { stack2.push(stack1.top()); stack1.pop(); } } T temp = stack2.top(); stack2.pop(); return temp; } int main() { CQueue<char> queue; queue.appendTail('a'); queue.appendTail('b'); queue.appendTail('c'); cout << queue.deleteHead() << endl; cout << queue.deleteHead() << endl; queue.appendTail('d'); cout << queue.deleteHead() << endl; queue.appendTail('e'); cout << queue.deleteHead() << endl; cout << queue.deleteHead() << endl; return 0; }
#include <iostream>
#include <queue>
using namespace std;
queue<char> q1;
queue<char> q2;
void appendTail(const char data)
{
if (q1.size()==0 && q2.size() ==0)//如果q1与q2都为空,那么往q1中插入元素
{
q1.push(data);
}
else if (q1.size()>0)//如果q1不为空,那么往q1中插入元素
{
q1.push(data);
}
else if(q2.size()>0)//如果q2不为空,那么往q1中插入元素
{
q2.push(data);
}
}
char deleteTail()
{ char temp;
if (q2.size() == 0)
{
while(q1.size() != 1)
{
q2.push(q1.front());
q1.pop();
}
temp = q1.front();
q1.pop();
}
else
{
while(q2.size() != 1)
{
q1.push(q2.front());
q2.pop();
}
temp = q2.front();
q2.pop();
}
return temp;
}
int main()
{
appendTail('a');
appendTail('b');
appendTail('c');
cout << deleteTail() << endl;
cout << deleteTail() << endl;
appendTail('d');
cout << deleteTail() << endl;
appendTail('e');
cout << deleteTail() << endl;
cout << deleteTail() << endl;
return 0;
}
相关文章推荐
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer:面试题7 用两个栈实现队列
- 【剑指Offer学习】【面试题7:用两个栈实现队列】
- 剑指Offer----面试题七:用两个栈实现队列
- 【剑指offer】面试题七:用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer面试题7用两个栈实现队列
- 剑指offer--面试题7:用两个栈实现队列--Java实现
- 剑指offer--面试题7: 用两个栈实现队列
- 剑指offer面试题7:用两个栈实现队列
- 【剑指Offer面试题】 九度OJ1512:用两个栈实现队列
- 【剑指offer】2.3.5栈和队列——面试题7:用两个栈实现队列
- 剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈
- 【练习笔记】剑指offer-面试题7 :用两个栈实现队列
- 剑指offer 面试题7 两个栈实现队列
- 【剑指offer 面试题7】用两个栈实现队列
- 剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作
- 剑指offer之面试题7:用两个栈实现队列
- [剑指offer][面试题07-扩展]用两个队列实现栈
- [剑指offer][面试题07]用两个栈实现队列