用佇列實現棧

2021-10-21 02:48:53 字數 1047 閱讀 2951

本文所解決的問題是如何用佇列來實現棧

我們採用雙佇列的思想,這兩個佇列地位是一致的,當棧非空時,一定是乙個隊列為空,另乙個佇列非空。當進行入棧操作時,我們找到非空佇列,在該佇列新增元素;當進行出棧操作時,我們同樣找到非空佇列,將該非空佇列除隊尾元素外的其餘元素新增到另一佇列,然後讓隊尾元素出隊。

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...