232 用棧實現佇列

2021-10-02 10:31:26 字數 1086 閱讀 7676

使用棧實現佇列的下列操作:

myqueue queue = new myqueue();

queue.push(1);

queue.push(2);

queue.peek(); // 返回 1

queue.pop(); // 返回 1

queue.empty(); // 返回 false

說明:

這個題目的關鍵點在於,只能用棧的幾個操作實現。

由於棧先進後出,和佇列先進先出天然矛盾,故考慮採用兩個棧,乙個只進行入棧push操作,乙個只進行出棧pop或peek操作。當只進行出棧操作的棧空時將另乙個棧中的內容push到該棧,如此,就擁有了先進先出的特性。

class

queue

(object):

def__init__

(self)

:"""

initialize your data structure here.

"""self.instack, self.outstack =

,[]def

push

(self, x)

:"""

:type x: int

:rtype: nothing

"""defpop

(self)

:"""

:rtype: nothing

"""self.peek(

) self.outstack.pop(

)def

peek

(self)

:"""

:rtype: int

"""ifnot self.outstack:

while self.instack:))

return self.outstack[-1

]def

empty

(self)

:"""

:rtype: bool

"""return

not self.instack and

not self.outstack

232 用棧實現佇列

解法一 雙棧法 用乙個棧來儲存棧的順序,乙個棧來儲存相反的順序即佇列的順序 兩個棧相互顛倒,就可以操作頭部和尾部了。class myqueue void push int x s2.push x 將x壓入棧順序儲存的s2 while s2.empty intpop intpeek bool empt...

232用棧實現佇列

使用棧實現佇列的下列操作 push x 將乙個元素放入佇列的尾部。pop 從佇列首部移除元素。peek 返回佇列首部的元素。empty 返回佇列是否為空。1 import j a.util.stack 23 public class stackforqueue 910 public void pus...

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

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