面试题7:用两个栈实现队列
来源:互联网 发布:u盘在mac上什么都没有 编辑:程序博客网 时间:2024/05/15 02:46
/*面试题7
题目:用两个栈实现队列。队列的声明如下,是在在队列尾部插入结点和在队列头部删除结点的功能。
*/
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> void CQueue<T>::appendTail(const T& element)
{
stack1.push(element);
}
template <typename T> T CQueue<T>::deleteHead()
{
if(stack2.size()<=0)//stack2为空时,将stack1的元素逐个压入stack2中
{
while(stack1.size()>0)
{
T& data=stack1.top();
stack1.pop();
stack2.push(data);
}
}
if(stack2.size()==0)
{
throw new exception("queue is empty");
}
T head=stack2.top();//stack2不为空时,栈顶元素是最先进入队列的元素,可以弹出。
stack2.pop();
return head;
}
/*可以通过画图将抽象的问题形象化。
测试用例包含:往空队列里添加、删除元素,往非空队列里添加、删除元素,连续删除元素直至队列为空。
*/
题目:用两个栈实现队列。队列的声明如下,是在在队列尾部插入结点和在队列头部删除结点的功能。
*/
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> void CQueue<T>::appendTail(const T& element)
{
stack1.push(element);
}
template <typename T> T CQueue<T>::deleteHead()
{
if(stack2.size()<=0)//stack2为空时,将stack1的元素逐个压入stack2中
{
while(stack1.size()>0)
{
T& data=stack1.top();
stack1.pop();
stack2.push(data);
}
}
if(stack2.size()==0)
{
throw new exception("queue is empty");
}
T head=stack2.top();//stack2不为空时,栈顶元素是最先进入队列的元素,可以弹出。
stack2.pop();
return head;
}
/*可以通过画图将抽象的问题形象化。
测试用例包含:往空队列里添加、删除元素,往非空队列里添加、删除元素,连续删除元素直至队列为空。
*/
0 0
- 面试题7 两个栈实现队列
- 剑指offer-->面试题7 用两个栈实现队列
- 面试题7:用两个栈实现队列
- 面试题7:用两个队列实现栈
- 面试题7 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer:面试题7 用两个栈实现队列
- 面试题7:用两个栈实现队列
- 面试题7-用两个栈实现队列
- 面试题7 用两个栈实现队列
- 面试题7:用两个栈实现队列
- 面试题7 用两个栈实现队列
- 《剑指Offer》面试题7:用两个栈实现队列
- 面试题7:用两个栈实现队列
- 【剑指offer】 面试题7: 用两个栈实现队列
- 面试题7,用两个栈实现队列
- 面试题7:用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- sd
- 智能手机之MTK硬件平台简介
- Unity3D定时器的调用
- 巴菲特致股东的一封信:1982年
- PAT B1003 我要通过
- 面试题7:用两个栈实现队列
- 巴菲特致股东的一封信:1981年
- 虚函数表
- 巴菲特致股东的一封信:1980年
- TCP网络编程最本质是的处理三个半事件
- eclipse中c++开发中添加包含路径和库路径的操作
- -bash: ./backup.sh: /bin/bash^M: bad interpreter: No such file or directory
- /bin/sh^M: bad interpreter:没有那个文件或目录解决
- C#中Ilist与list的区别小结