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

2021-08-11 12:36:54 字數 2221 閱讀 7173

stack 後進先出(lifo)

是在表的一端進行插入或刪除運算的線性表,我們把插入、刪除的這一端稱為棧頂(top),另一端稱為棧底(bottom)。

e push(e item)把元素壓入棧頂並返回此元素

e pop()移除棧頂元素並返回此元素

e peek()檢視棧頂元素而不移除它

boolean empty()測試棧是否為空

int search(object o)返回元素在棧中的位置,-1代表未找到該元素

stack1負責入棧,stack2負責出棧

入佇列:直接把stack1壓入

出佇列:如果stack2不為空,則把stack2棧頂元素直接彈出,否則,把stack1中所有元素全部壓入到stack2中,再彈出stack2棧頂元素

注意:對stack1、stack1棧中元素做空處理

public

class twostackimpqueue

public boolean offer(int

value)

public integer poll() else

if (!stack2.empty())

}return

value;

}public

static

void

main(string args)

}

123

45null

null

queue 先進先出(fifo)

佇列是一種特殊的線性表,它只允許在佇列頭部進行刪除操作,而在佇列尾部進行插入操作。linkedlist類實現了queue介面,因此可以把linkedlist當成queue來用。

boolean add(e var1)增加乙個元索 如果佇列已滿,則丟擲乙個illegalstateexception異常

e remove()移除並返回佇列頭部的元素 如果隊列為空,則丟擲乙個nosuchelementexception異常

e element()返回佇列頭部的元素 如果隊列為空,則丟擲乙個nosuchelementexception異常

boolean offer(e var1)新增乙個元素並返回true 如果佇列已滿,則返回false

e poll()移除並返問佇列頭部的元素 如果隊列為空,則返回null

e peek()返回佇列頭部的元素 如果隊列為空,則返回null

元素集中存放在乙個佇列中,但不指定(queue1或queue2,此處預設是queue1)

入棧:哪個佇列不為空就壓入到那個佇列

出棧:把不為空的佇列,除最後乙個元素,全部轉移到另乙個佇列,並把最後這個元素彈出

注意:對queue1、queue2佇列中元素做空處理

public

class twoqueueimpstack

public integer push(integer value) else

if (!queue2.isempty())

if (queue1.isempty() && queue2.isempty())

return

value;

}public integer pop()

}} else

if (!queue2.isempty()) }}

return

value;

}public

static

void

main(string args)

}

345

21null

null

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

棧 先進後出 佇列 先進先出 思路兩個棧實現乙個佇列 思路 兩個棧 都是先進後出 push新增資料的時候,將data資料push到stack1 中,pop資料的時候,先判斷stack2種是否有資料 如果有資料的話,直接pop stack2中的資料 因為pop是直接彈出最後乙個資料 如果stack2中...

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

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

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

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