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...