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

2021-10-05 09:45:25 字數 1210 閱讀 6654

1.具體思路:

1.準備兩個佇列ab

2.a用來執行入佇列(每次入佇列時只要放入a即可)

3.出棧操作時,在a中元素保留乙個的情況下將a中元素依次入佇列b,最後直接讓a中的剩下的那乙個元素出佇列即可,執行完,交換ab佇列(方便下次出棧)

4,取棧頂元素操作時,和出棧操作一樣,不過訪問完a的唯一元素後,再存放到b(保持資料的完整性),最後交換ab即可

2,圖示

//當迴圈結束時,棧佇列a就剩乙個元素

int rec = a.

poll()

;//儲存這個元素,並出佇列

swap()

;//交換ab佇列,便於下次操作(無論是入棧出棧取棧頂元素都保證了是a中元素往b中倒騰)

return rec;

//返回出棧元素,

}public

void

swap()

public integer peek()

while

(a.size()

>1)

//當迴圈結束時,棧佇列a就剩乙個元素

int rec = a.

poll()

;//儲存這個元素,並出佇列

b.offer

(rec)

;//將這個元素再放入佇列b(保持棧的元素完整)

swap()

;//交換ab佇列,便於下次操作(無論是入棧出棧取棧頂元素都保證了是a中元素往b中倒騰)

return rec;

//返回出棧元素,

}public

boolean

isempty()

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

問題 如何用兩個棧實現乙個對列的功能?思路 從棧a入佇列,從棧b出佇列。佇列的2個最重要的操作,入佇列,出佇列。入佇列 從棧a入佇列。出佇列 分兩種情況 如果棧b不為空,直接彈出。如果棧b為空,將棧a中的資料全部彈入棧b中,再從棧b彈出資料 實現如下 queuebystack.cpp 定義控制台應用...

如何用兩個棧模擬乙個佇列

這是當年 資料結構 課的乙個問題,拿出來鞏固一下。使用兩個棧,其中乙個棧stack1負責新增元素,另外乙個棧stack2負責彈出元素。分兩種情況,如果stack2不空則直接彈出,否則逐個彈出stack1中的元素放入stack2中,然後再從stack2中彈出乙個元素。package algorithm...

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

一 兩個棧實現乙個佇列 設兩個棧分別為stack1和stack2,stack1主要負責 進入 模擬的是 隊尾 stack2主要負責 彈出 模擬的是 隊頭 具體思路如下 1 對於 資料入隊 操作,只需要將資料壓入stack1即可 2 對於 資料出隊 操作,若stack2非空,直接彈出棧頂元素 若sta...