设为首页 加入收藏

TOP

用两个栈实现队列
2014-11-23 21:26:34 来源: 作者: 【 】 浏览:15
Tags:两个 实现 队列

用两个栈实现一个队列,队列声明如下,实现它的两个函数appendTail和deleteHead,分别完成在队尾插入结点和在队列头部删除结点的功能


template
class CQueue
{
public:
CQueue();
~CQueue();

void appendTail(const T& nods);
T deleteHead();


private:
stack stack1;
stack stack2;
};



#include
#include
#include
using namespace std;


template
class CQueue
{
public:
CQueue(){};
~CQueue(){};

void appendTail(const T& nods);
T deleteHead();


private:
stack stack1;
stack stack2;
};


template
void CQueue::appendTail(const T& nods)
{
stack1.push(nods);
}


template
T CQueue::deleteHead()
{
if (stack2.size() == 0)
{
if (stack1.size() > 0)
{
while (stack1.size() > 0)
{
T& data = stack1.top();
stack1.pop();
stack2.push(data);
}
T& ret = stack2.top();
stack2.pop();
return ret;
}
else
throw new exception();
}
else
{
T ret = stack2.top();
stack2.pop();
return ret;
}
}


int main()
{
CQueue myDeque;
myDeque.appendTail(1);
myDeque.appendTail(2);
myDeque.appendTail(3);
try{
cout << myDeque.deleteHead() << endl;
cout << myDeque.deleteHead() << endl;
} catch(exception ex) {
cout << "has exception" << endl;
}
return 0;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇从上往下打印二叉树 下一篇二分查找中的死循环

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: