面试题9:用两个栈实现队列
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。
解答:当stack2不为空时,在stack2中的栈顶元素是最先进入队列的元素,可以弹出。当stack2为空时,就把stack1中的元素逐个弹出并压入stack2。由于先进入队列的元素被压倒stack1的底端,经过弹出和压入操作之后就处于stack2的顶端,又可以直接弹出。代码如下:
void appendTail(int node)
{
stack1.push(node);
}
int deleteHead()
{
int data;
if(!stack1.empty())
{
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
}
if(stack2.size() == 0)
{
throw new exception("queue is empty");
}
data = stack2.top();
stack2.pop();
return data;
}
本文介绍了一种使用两个栈来实现队列的方法。通过在不同条件下对两个栈进行操作,可以实现在队列尾部添加元素和从队列头部移除元素的功能。此方法巧妙地利用了栈的特性,实现了队列的基本操作。
155

被折叠的 条评论
为什么被折叠?



