用棧實現佇列 棧和佇列學習

2021-10-06 13:57:32 字數 742 閱讀 1554

正如標題所述,你需要使用兩個棧來實現佇列的一些操作。

佇列應支援push(element),pop() 和 top(),其中pop是彈出佇列中的第乙個(最前面的)元素。

pop和top方法都應該返回第乙個元素的值。

棧是先進後出,佇列是先進先出。

第一想法是用棧一接收push的數。每次pop和top的時候,把棧一的數轉移到棧二去,處理完再轉回來。

後面想想怎麼優化

首先想到的是,其實棧二的數不用立即轉回去,等push的判斷一下,如果棧一為空再轉。

後面仔細一想其實不用轉回去

push的時候將數打入棧一

pop和top的時候將棧一的數打入棧二即可,因為這樣順序也永遠是正確的。

stackstack_1;

stackstack_2;

public myqueue()

/* * @param element: an integer

* @return: nothing

*/public void push(int element)

/* * @return: an integer

*/public int pop()

return stack_2.pop();}/*

* @return: an integer

*/public int top()

return stack_2.peek();

}

用棧實現佇列 用佇列實現棧

棧的特點 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...