請你僅使用兩個棧實現先入先出佇列。佇列應當支援一般佇列支援的所有操作(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...