**實現
使用棧實現佇列的下列操作:
push(x)
– 將乙個元素放入佇列的尾部。
pop()
– 從佇列首部移除元素。
top()
– 返回佇列首部的元素。
empty()
– 返回佇列是否為空。
示例:
myqueue queue =
newmyqueue()
;queue.
push(1
);queue.
push(2
);
queue.
top();
// 返回 1
queue.
pop();
// 返回 1
queue.
empty()
;// 返回 false
說明:
你只能使用標準的棧操作 – 也就是只有push to top
,peek/pop from top
,size
, 和is empty
操作是合法的。
你所使用的語言也許不支援棧。你可以使用list
或者deque
(雙端佇列)來模擬乙個棧,只要是標準的棧操作即可。
假設所有操作都是有效的 (例如,乙個空的佇列不會呼叫 pop 或者 peek 操作)。
建立兩個棧:乙個in
棧,乙個out
棧進行操作。
假定棧內元素按順序分別為:9
、5
、2
、7
。
pop
:隊列為fifo型規則(first in first out),用棧來實現就是先將除棧底元素的元素逐個壓入out
棧,最後彈出棧頂元素即可。那麼此時此時佇列出隊的隊首元素為9
。
實現方式是:使用臨時變數,針對in
棧中元素的迴圈出棧,每週期儲存一次,緊跟著按順序逐個對out
棧的迴圈入棧。最後彈出棧頂元素,形成出隊行為。
class
myqueue
//2. 出隊
int pop()
} int v = out.
top();
out.
pop();
return v;
}//3. 返回隊首元素
int top()
} int v = out.
top();
return v;
}//4. 返回佇列是否為空
bool empty()
};
用棧實現佇列 用佇列實現棧
棧的特點 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...