本文所解決的問題是如何用佇列來實現棧
我們採用雙佇列的思想,這兩個佇列地位是一致的,當棧非空時,一定是乙個隊列為空,另乙個佇列非空。當進行入棧操作時,我們找到非空佇列,在該佇列新增元素;當進行出棧操作時,我們同樣找到非空佇列,將該非空佇列除隊尾元素外的其餘元素新增到另一佇列,然後讓隊尾元素出隊。
class
mystack
/** 入棧操作 */
public
void
push
(int x)
/** 出棧操作 */
public
intpop()
queue
queue_pop=queue1.
isempty()
?queue2:queue1;
queue
queue_store=queue1.
isempty()
?queue1:queue2;
while
(queue_pop.
size()
!=1)return queue_pop.
poll()
;}/** 返回棧頂元素 */
public
inttop()
queue
queue_pop=queue1.
isempty()
?queue2:queue1;
queue
queue_store=queue1.
isempty()
?queue1:queue2;
while
(queue_pop.
size()
!=1)int peek=queue_pop.
peek()
; queue_store.
add(queue_pop.
poll()
);return peek;
}/** 判斷棧是否為空 */
public
boolean
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...