两个栈实现队列
2016-01-08 10:02
337 查看
设置两个栈实现队列的先进先出的功能。
两个栈设置为stack1,stack2。stack1是用于插入数据,stack2是用于删除数据。插入数据直接插入到stack1中即可,对于删除数据,那么是当stack1不为空时将stack1中的数据移动到stack2中,那么弹出栈顶元素即可。
代码如下:
void CQueue::AppendTail(int data)//入队列
{
stack1.Push(data);
}
int CQueue::DeleteHead()//出队列
{
if (stack2.empty() ==
1)//第二个栈为空,那么将数据从栈1中,移动到栈2中
{
while (stack1.empty()
!= 1)//只要不为空,那么就移动
{
stack2.Push(stack1.Pop());
}
}
if (stack2.empty() == 1)
{
cout<<"队列为空"<<endl;
exit(0);
}
int data = stack2.Pop();
return data;
}
两个栈设置为stack1,stack2。stack1是用于插入数据,stack2是用于删除数据。插入数据直接插入到stack1中即可,对于删除数据,那么是当stack1不为空时将stack1中的数据移动到stack2中,那么弹出栈顶元素即可。
代码如下:
void CQueue::AppendTail(int data)//入队列
{
stack1.Push(data);
}
int CQueue::DeleteHead()//出队列
{
if (stack2.empty() ==
1)//第二个栈为空,那么将数据从栈1中,移动到栈2中
{
while (stack1.empty()
!= 1)//只要不为空,那么就移动
{
stack2.Push(stack1.Pop());
}
}
if (stack2.empty() == 1)
{
cout<<"队列为空"<<endl;
exit(0);
}
int data = stack2.Pop();
return data;
}
相关文章推荐
- 从尾到头打印链表
- C++ string::size_type 类型
- C++构造函数初始化列表与赋值
- char *s 和 char s[] 的区别小结
- 完整备份工具dump
- dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解
- 访问权限
- 连接文件ln
- 单源点最短路径--2
- 单源点最短路径
- 忘记root密码
- 内联函数和constexpr函数
- 文件系统的简单操作df,du
- IP地址与子网划分
- 把Java程序打包成jar文件包并执行
- java读写txt文件
- java读取TXT文件的方法
- 301、404、200、304等HTTP状态
- List双向链表容器
- python——线程与多线程进阶