如何用兩個棧實現乙個佇列

2021-08-04 08:38:29 字數 1030 閱讀 5767

問題:如何用兩個棧實現乙個對列的功能?

思路:從棧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...