面试题7—相关题目(两个队列实现栈)
2017-06-26 11:24
302 查看
代码示例:
#include<iostream>
#include<queue>
using namespace std;
//用两个队列模拟栈的操作
class CStack
{
public:
CStack()
{
}
~CStack()
{
}
void PushStack(int data);
bool PopStack(int &temp);
private:
queue<int>q1;
queue<int>q2;
};
void CStack::PushStack(int data)
{
if (q1.empty() && q2.empty())
{
q1.push(data);
return;
}
if (!q1.empty())
{
q1.push(data);
return;
}
if (!q2.empty())
{
q2.push(data);
return;
}
}
bool CStack::PopStack(int &temp)
{
if (!q1.empty())
{
while (!q1.empty())
{
temp = q1.front();
if (q1.size()!=1)
q2.push(temp);
q1.pop();
}
return true;
}
if (!q2.empty())
{
while (!q2.empty())
{
temp = q2.front();
if (q2.size()!=1)
q1.push(temp);
q2.pop();
}
return true;
}
return false;
}
void main()
{
CStack mystack;
int a[5] = { 5, 6, 8, 90, 1 };
for (int i = 0; i < 5; i++)
{
mystack.PushStack(a[i]);
}
int topvalue = 0;
for (int i = 0; i <5; i++)
{
bool flag = mystack.PopStack(topvalue);
if (flag)
{
cout << "出栈:" << topvalue << endl;
}
}
}
#include<iostream>
#include<queue>
using namespace std;
//用两个队列模拟栈的操作
class CStack
{
public:
CStack()
{
}
~CStack()
{
}
void PushStack(int data);
bool PopStack(int &temp);
private:
queue<int>q1;
queue<int>q2;
};
void CStack::PushStack(int data)
{
if (q1.empty() && q2.empty())
{
q1.push(data);
return;
}
if (!q1.empty())
{
q1.push(data);
return;
}
if (!q2.empty())
{
q2.push(data);
return;
}
}
bool CStack::PopStack(int &temp)
{
if (!q1.empty())
{
while (!q1.empty())
{
temp = q1.front();
if (q1.size()!=1)
q2.push(temp);
q1.pop();
}
return true;
}
if (!q2.empty())
{
while (!q2.empty())
{
temp = q2.front();
if (q2.size()!=1)
q1.push(temp);
q2.pop();
}
return true;
}
return false;
}
void main()
{
CStack mystack;
int a[5] = { 5, 6, 8, 90, 1 };
for (int i = 0; i < 5; i++)
{
mystack.PushStack(a[i]);
}
int topvalue = 0;
for (int i = 0; i <5; i++)
{
bool flag = mystack.PopStack(topvalue);
if (flag)
{
cout << "出栈:" << topvalue << endl;
}
}
}
相关文章推荐
- 剑指offer面试题java实现之题4之相关题目:两个排序数组合并
- 剑指offer-面试题07-衍生题目:用两个队列实现栈
- 剑指offer编程题Java实现——面试题7相关题用两个队列实现一个栈
- 面试题13 - 用两个栈实现队列 【栈】
- 经典面试题一:用两个栈实现一个队列
- 《剑指offer》面试题7—用两个栈实现队列
- 程序员面试题精选100题(18)-用两个栈实现队列[数据结构]
- [剑指offer][面试题07]用两个栈实现队列
- 面试题7:用两个栈实现队列和用两个队列实现一个栈
- 面试题6:用两个栈实现队列
- [剑指offer][面试题07-扩展]用两个队列实现栈
- 面试题6:用两个栈实现队列
- 【九度】题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列 && 包含min函数的栈
- 剑指offer-->面试题7 用两个栈实现队列
- 题目1512:用两个栈实现队列
- 程序员面试题精选100题(18)-用两个栈实现队列以及用两个队列实现栈
- 面试题研究 用两个栈模拟实现队列
- 微软,Google面试题 (18) —— 用两个栈实现一个队列
- 题目1512:用两个栈实现队列