程式設計師修煉 劍指offer之用兩個棧實現佇列

2021-10-24 22:34:13 字數 822 閱讀 7624

之前寫過一遍棧的實現,今天說說怎麼用棧實現佇列的功能

題目描述

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。

首先做題前明確思路,再動手碼**。

1.佇列是先進先出,而棧是先進後出

2.實現佇列就是實現佇列的兩個操作,入隊和出隊

使用兩個棧stack1和stack2,stack1模擬入隊,stack2模擬出隊

操作思路如下:

1.入隊操作,直接將資料壓入stack1棧即可。

void

push

(int node)

2.出隊操作,若stack2不為空,直接彈出棧頂元素,若不為空,將stack1所有元素彈入stack2之後,再彈出stack2棧頂元素。

這裡稍稍要思考的乙個地方就是,當stack2為空時的操作思路,因為佇列是先進先出的,往stack2裡面放元素時,需要把stack1最先進入的元素最後放,這樣它就在棧頂了,就滿足先進先出的原則了,想通這一點就很好寫**了

int

pop()}

//stack2不為空,則直接彈出棧頂元素

a = stack2.

top();

stack2.

pop();

return a;

}

**該過程,這三句**的作用如下,元素的位置發生了改變,最先進入的元素1,變成了棧頂元素,滿足了先進先出原則

程式設計師修煉。。。

第一重 在哪本電腦雜誌上看見軟體工程師這個職業介紹,或者走在大街上看見某某軟體培訓機構鼓吹培訓完就能年薪10萬的廣告,有些羨慕那些程式設計序的,自己有些蠢蠢欲動。第二重 用控制台或者說sdk之類的東西寫了乙個 hello world 感覺程式設計這個東西,太簡單沒難度。第三重 學會了簡單的使用某某工...

程式設計師武功修煉

第一階段 此階段主要是能熟練地使用某種語言。這就相當於練武中的套路和架式這些表面的東西。第二階段 此階段能精通基於某種平台的介面 例如我們現在常用的win 32的api函式 以及所對應語言的自身的庫函式。到達這個階段後,也就相當於可以進行真實散打對練了,可以真正地在實踐中做些應用。第三階段 此階段能...

程式設計師修煉之道

在所有的弱點中,最大的弱點就是害怕自己暴露弱點。j.b bossuet,politics from holy writ,1709 provide options,don t make lame excuses 提供各種選擇,不要找蹩腳的藉口 don t live with broken window...