題目鏈結(力扣):
題意:用兩個棧模仿佇列的插入和刪除兩個動作最終呈現的效果。
用兩個棧模仿佇列,第乙個棧負責正常入隊,出隊時為了保證先進先出的順序,需要把第乙個棧中的內容倒置,即第二個棧的作用。呼叫deletehead函式時,需要將棧一中的元素全部一一彈出,並逐個壓入棧二,此時再從棧二彈出的元素,即為佇列彈出隊頭時應輸出的元素。再輸入資料時,就再壓入棧一,需要輸出時,就再將棧一的元素轉移到棧二,接著彈出,迴圈操作即可。
**:
classcqueue
while(!stack2.empty())
}value)
intdeletehead()
}if(stack2.empty())
else
}};
小結:這個題不像之前比賽中的題,這種題提供基本的框架,不寫輸入輸出語句,所以乍一上手比較懵,也不知道系統負責處理哪些部分,自己需要寫哪些部分。沒有之前整體的連貫感,但是這個題就是考基本的資料結構知識點的掌握,有點像學校的考試,需要完成的部分就是填寫函式中的內容。
劍指 Offer 09 用兩個棧實現佇列
劍指 offer 09.用兩個棧實現佇列 示例 1 輸入 3 輸出 null,null,3,1 示例 2 輸入 5 2 輸出 null,1,null,null,5,2 上大二時候就學的老經典了。思路 宣告兩個棧s1,s2。入佇列操作等同於入棧s1。出佇列操作分三種情況 1.兩個棧都為空,意味著隊列為...
劍指offer 09 用兩個棧實現佇列
示例 1 示例 2 這個地方有點繞,需要注意的是 當stack2不為空時,佇列中的元素都在stack2中 stack2中都是待刪除的元素 無論stack1中是否有元素都從2中彈出元素 頻繁的插入和刪除首選linkedlist,通常情況下不推薦使用vector和及其子類stack class cque...
劍指 Offer 09 用兩個棧實現佇列
該題使用兩個棧,乙個用於存資料,乙個用於取資料,而棧的思路是後進先出,佇列的思路是先進先出,所以需要在插入資料時將所有資料放入a棧,如果此時需要取出資料,那麼就將a內的資料都pop到b中去,假如現在我們插入了 1,2,3 到a中,那麼此時呼叫取資料的函式,將會把資料轉存到b中,b中的資料就為 3,2...