1-题目 :
用两个栈实现队列。
2-思路 :
2.1-删除元素的步骤 : 当stack2中不为空时,在stack2中的栈顶元素是最先进入队列的元素,可以pop出去;如果stack2为空时,把stack1中的元素逐个pop出来并push进入stack2,由于先进入队列的元素被压到stack1的底端,经过pop和push之后就处于stack2的顶端了,又可以直接pop出去。
2.2-插入元素的步骤 : 直接放入stack1。
| 操作 | 栈1 | 栈2 |
|---|---|---|
| append a | {a} | {} |
| append b | {a, b} | {} |
| append c | {a, b, c} | {} |
| delete head | {} | {b, c} |
| delete head | {} | {c} |
| append d | {d} | {c} |
| delete head | {d} | {} |
3-代码 :
//插入元素的步骤
template <typename T> void CQueue<T>::appendTail(const T &element)
{
//直接push进stack1
stack1.push(element);
}
//删除元素的步骤
template <typename T> void CQueue<T>::deleteHead()
{
//如果stack2为空,则将stack1元素反向压入stack
if (stack2.size() <= 0)
{
while (stack1.size() > 0)
{
T &data = stack1.top();
stack1.pop();
stack2.push(data);
}
}
//删除stack2栈顶元素
stack2 assert(stack2.size() > 0);
stack2.pop();
}
继续阅读与本文标签相同的文章
-
史上最详细Java内存区域讲解
2026-05-19栏目: 教程
-
Hystrix Dashboard:断路器执行监控
2026-05-19栏目: 教程
-
AGV为什么要选择视觉导航
2026-05-19栏目: 教程
-
《Absolute Java 中文版》| 每日读本书
2026-05-19栏目: 教程
-
汽车圈微信聊天记录大曝光
2026-05-19栏目: 教程
