C 用棧實現佇列

2021-09-16 20:30:41 字數 1455 閱讀 9527

**實現

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

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棧進行操作。

假定棧內元素按順序分別為:9527

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