60 用棧實現佇列

2022-10-08 23:42:27 字數 917 閱讀 7234

請你僅使用兩個棧實現先入先出佇列。佇列應當支援一般佇列支援的所有操作(push、pop、peek、empty):

實現 myqueue 類:

void push(int x) 將元素 x 推到佇列的末尾

int pop() 從佇列的開頭移除並返回元素

int peek() 返回佇列開頭的元素

boolean empty() 如果隊列為空,返回 true ;否則,返回 false

說明:你 只能 使用標準的棧操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。

你所使用的語言也許不支援棧。你可以使用 list 或者 deque(雙端佇列)來模擬乙個棧,只要是標準的棧操作即可。

/*

解題思路

佇列的特性是 fifofifo(先入先出),而棧的特性是 filofilo(先入後出)。

知道兩者特性之後,我們需要用兩個棧來模擬佇列的特性,乙個棧為入隊棧,乙個棧為出對棧。

當出隊棧存在內容時,出隊棧的棧頂,即為第乙個出隊的元素。

若出隊棧無元素,我們的需求又是出隊的話,我們就需要將入隊棧的內容反序匯入出隊棧,然後彈出棧頂即可。

注意:根據棧的的特性,我們僅能使用 pushpush 和 poppop 操作。

*/class myqueue

public void push(int x)

public int pop()

return outstack.pop();

}public int peek()

return outstack.peek();

}public boolean empty()

private void in2out()

}}

用棧實現佇列 用佇列實現棧

棧的特點 filo firstinlastout 僅能從棧頂插入,刪除元素。最基本的介面包括push 從棧頂壓入元素 pop 從棧頂彈出元素 佇列的特點 fifo firstinfirstout 僅能從隊頭刪除元素,從隊尾插入元素。最基本的介面包括enque 從隊尾插入元素 deque 從隊頭刪除元...

用棧實現佇列,用佇列實現棧。好玩!!!

因為在資料結構中,棧和佇列長得實在是太像了,將他們拿來比較是不可避免的,棧 後進先出,而佇列 先進先出。同樣是只能在一端進行操作,那麼問題來了,能相互實現?能不能得好好分析一下嘛,如果是用兩個棧來實現佇列,好像這操作可以哦。一下,你就明白!顯然用兩個棧可以實現佇列的功能,就是借助另乙個棧來中轉一下,...

232 用棧實現佇列 225 用佇列實現棧

用棧實現佇列 佇列是先進先出,實現佇列的最直觀的方法是用鍊錶。但本題是要求使用棧。本題兩個stack相互倒,負負得正 class myqueue def init self self.instack self.outstack defpush self,x def pop self if len s...