通過兩個佇列實現乙個棧和通過兩個棧實現乙個佇列

2021-09-27 11:42:57 字數 1324 閱讀 5466

1、思路

首先定義兩個佇列queue1、queue2和待輸入資料的陣列arr[ ],將陣列中資料push到佇列queue1中。定義乙個srclength為陣列長度,然後將queue1中資料出到queue2中,直到queue1中剩餘乙個資料為止,將queue1中剩餘乙個資料進行出隊列印,srclength–。如果srclength不等於0,將queue2中資料出到queue1中,剩餘乙個資料為止,將該資料出隊列印,srclength–,當不滿足srclength>0的條件時,停止迴圈。此時得到的資料即是棧輸出資料順序。

2、**

public

static

void

twoqueuetoonestack

(t arr)

int srclength=arr.length;

while

(srclength>0)

//queue1 剩餘乙個元素,出隊列印

system.out.

print

(queue1.

peek()

+" ");

srclength--;if

(srclength !=0)

//此時queue2 剩餘乙個元素進行出隊列印操作

system.out.

print

(queue2.

peek()

+" ");

queue2.

pop();

srclength--;}

}}public

static

void

main

(string[

] args));

}

1、思路

首先定義兩個棧stack1、stack2和待輸入資料的陣列arr[ ],將陣列中資料push到stack1中,stack1不為空的時候,獲取棧頂資料進入stack2中,直到stack1為空,然後輸出stack2中棧頂資料直至stack2為空,此時得到的資料順序即是佇列資料輸出順序。

2、**

public

static

void

twostacktoonequeue

(t arr)

while

(!stack1.

isempty()

)while

(!stack2.

isempty()

)}public

static

void

main

(string[

] args));

}

兩個棧實現乙個佇列和兩個佇列實現乙個棧

stack 後進先出 lifo 是在表的一端進行插入或刪除運算的線性表,我們把插入 刪除的這一端稱為棧頂 top 另一端稱為棧底 bottom e push e item 把元素壓入棧頂並返回此元素 e pop 移除棧頂元素並返回此元素 e peek 檢視棧頂元素而不移除它 boolean empt...

兩個棧實現乙個佇列和兩個佇列實現乙個棧

棧的特性 先進後出 filo 佇列的特性 先進先出 fifo 1 兩個棧實現乙個佇列 1 思路 入棧時,直接壓入棧1中 如果棧1滿了,判斷棧2是否為空,若為空,則將棧1元素全部倒入棧2,再入棧 若棧2不為空,則不能再入元素 出棧時,判斷棧2是否為空,若棧為空,則將棧1中的元素倒入棧2,否則直接彈出棧...

兩個棧實現乙個佇列和兩個佇列實現乙個棧

在這裡我們先說明一下,我們在此 中用到的棧和佇列都是stl庫中實現的 思路 兩個棧,stark1和stark2,將stark1作為儲存空間,stark2作為零時快取區。入隊時,將入隊元素全部壓入stark1中即可。出隊時,將stark1中的元素全部pop出來壓入stark2中,然後在全部pop出來就...