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

2021-10-04 02:48:56 字數 1336 閱讀 8446

用棧實現佇列

佇列是先進先出,實現佇列的最直觀的方法是用鍊錶。但本題是要求使用棧。

本題兩個stack相互倒,負負得正

class

myqueue

:def

__init__

(self)

: self.instack=

self.outstack=

defpush

(self,x)

:def

pop(self):if

len(self.outstack)==0

:while self.instack:))

return self.outstack.pop(

)def

peak

(self):if

len(self.outstack)==0

:while self.instack:))

return self.outstack[-1

]def

empty

(self)

:return

len(self.instack)==0

andlen

(self.outstack)==0

obj=myqueue(

)obj.push(1)

obj.push(2)

obj.push(3)

param_2=obj.peak(

)print

(param_2)

用佇列實現棧

用單佇列實現棧更簡便。對於前n-1個數,只要有push,就翻轉順序,比如輸入【1,2,3】

先輸入1,翻轉是1;再輸入2,翻轉是2,1而不是1,2。緊接著2,1再輸入3,翻轉3,2,1,實現棧的順序的輸入

class

mystack

:def

__init__

(self)

: self.queue=

defpush

(self,x)

:for i in

range

(len

(self.queue)-1

):0)

)def

pop(self)

:return self.queue.pop(0)

#隊首永遠是棧首資料

deftop

(self)

:return self.queue[0]

defempty

(self)

:return

len(self.queue)

==0

232 用棧實現佇列

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

232 用棧實現佇列

使用棧實現佇列的下列操作 myqueue queue new myqueue queue.push 1 queue.push 2 queue.peek 返回 1 queue.pop 返回 1 queue.empty 返回 false說明 這個題目的關鍵點在於,只能用棧的幾個操作實現。由於棧先進後出,...

232用棧實現佇列

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