問題:如何用兩個棧實現乙個對列的功能?
思路:從棧a入佇列,從棧b出佇列。**實現如下:佇列的2個最重要的操作,入佇列,出佇列。
入佇列:從棧a入佇列。
出佇列:分兩種情況
如果棧b不為空,直接彈出。
如果棧b為空,將棧a中的資料全部彈入棧b中,再從棧b彈出資料
// queuebystack.cpp : 定義控制台應用程式的入口點。
#include
"stdafx.h"
#include
#include
using namespace std;
template
class queue
virtual ~
queue()
void
push
(const t& e)
void
pop()}
m_stackb.
pop();
} size_t size()
const
bool empty()
t top()
}return m_stackb.
top();
}protected:
stack m_stacka;
//棧a
stack m_stackb;
//棧b};
int_tmain
(int argc, _tchar* argv)
引申思考:如何用兩個佇列實現乙個棧的功能?
思路:舉個例子:有d-->c-->b-->a
資料依次入棧,輸出順序應該是a-->b-->c-->d
先將d-->c-->b-->a
入佇列1,將c-->b-->a
彈出到佇列2,只留乙個,彈出d
,再將佇列2中所有資料入佇列1,繼續上面的步驟…大體就這個思路。
教你如何用兩個佇列實現乙個棧
1.具體思路 1.準備兩個佇列ab 2.a用來執行入佇列 每次入佇列時只要放入a即可 3.出棧操作時,在a中元素保留乙個的情況下將a中元素依次入佇列b,最後直接讓a中的剩下的那乙個元素出佇列即可,執行完,交換ab佇列 方便下次出棧 4,取棧頂元素操作時,和出棧操作一樣,不過訪問完a的唯一元素後,再存...
如何用兩個棧模擬乙個佇列
這是當年 資料結構 課的乙個問題,拿出來鞏固一下。使用兩個棧,其中乙個棧stack1負責新增元素,另外乙個棧stack2負責彈出元素。分兩種情況,如果stack2不空則直接彈出,否則逐個彈出stack1中的元素放入stack2中,然後再從stack2中彈出乙個元素。package algorithm...
如何用兩個棧實現乙個佇列以及用兩個佇列實現乙個棧
一 兩個棧實現乙個佇列 設兩個棧分別為stack1和stack2,stack1主要負責 進入 模擬的是 隊尾 stack2主要負責 彈出 模擬的是 隊頭 具體思路如下 1 對於 資料入隊 操作,只需要將資料壓入stack1即可 2 對於 資料出隊 操作,若stack2非空,直接彈出棧頂元素 若sta...