牛客刷題 用兩個棧實現佇列

2021-10-19 05:09:06 字數 589 閱讀 9170

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

佇列是先入先出,堆疊是先入後出,通過兩個堆疊的push和pop操作可以實現堆疊的元素反轉,從而達到先入先出的效果。

假設stack1是正常的棧,statck2是逆序的棧(和佇列順序一致),對於push操作,要保證新push的元素位於所有元素的最後,所以要先將stack2的元素pop出來push進stack1裡,然後將新元素push,對於pop操作,要保證pop的元素的最先push進去的,相當於pop出棧底元素,所以要先將stack1的元素pop出來push進stack2,然後stack2pop出元素。

完整**如下:

stackstack1 = new stack();

stackstack2 = new stack();

public void push(int node)

stack1.push(node);

}

public int pop()

return stack2.pop();

}

牛客網刷題 用兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。棧 先進後出 佇列 先進先出 push 1,2,3 pop 3,2,1 因為棧跟佇列出入的順序是相反的,所以我們可以借助兩個棧解決問題,stack1負責儲存push的資料,stack2負責在pop操作的時候,將stat...

用兩個棧實現佇列 用兩個佇列實現棧

劍指offer 面試題7 用兩個棧實現佇列。templateclass cqueue 我們試著用兩個棧來模擬佇列的操作,發現如下可行操作 完整 實現 面試題7 用兩個棧實現佇列 分別完成在隊尾插入結點和在隊頭刪除結點的功能。date 2014 06 27 include include includ...

牛客《劍指Offer》 用兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。棧的資料是後進先出的,所以利用兩個棧的配合可以實現佇列先進先出的效果。所有存入的資料,均壓入棧stack1。要取出資料時,開始stack2為空,將所有stack1中的資料取出,以此壓入stack2 中,這些資料再從st...