思想:①定义两个队列:temp临时队列、data队列;
②数据先存放到temp队列中;
③如果data队列不为NULL,将data队列内的数据依次出队存放在到temp队列中;
④将temp队列中数据依次出队,依次进入到data队列中。
完整代码如下:
#include<iostream>
using namespace std;
#include<stack>
#include<queue>
typedef struct Stack
{
queue<int>data;
}MyStack;
void Push(MyStack* ms, int value);
void Pop(MyStack* ms);
int Top(MyStack* ms);
void main()
{
MyStack ms;
Push(&ms,1);
Push(&ms,2);//2 1
printf("top=%d\n",Top(&ms));
Pop(&ms);//1栈顶元素
Push(&ms,4);//4 1
Push(&ms,5);// 5 4 1
printf("top=%d\n", Top(&ms));
Pop(&ms);//出栈
Push(&ms, 10);
}
//入栈
void Push(MyStack* ms, int value)
{
queue<int>temp;//定义temp临时队列
//将第一个数值放入temp队列
temp.push(value);
//依次将data队列中的数据放到temp中,此时后入的就在临时队列的头部
while (!ms->data.empty())
{
temp.push(ms->data.front());
ms->data.pop();
}
//将temp中的结果依次放入data队列中
while (!temp.empty())
{
ms->data.push(temp.front());
temp.pop();
}
}
//出栈,将data元素出队
int Top(MyStack* ms)
{
return ms->data.front();
}
//获取栈顶元素,即为data队列内的队头元素
void Pop(MyStack* ms)
{
ms->data.pop();
}
-
如有错误,敬请指正!
-
您的点赞与收藏是对我最大的鼓励与支持。