劍指offer 8 兩個棧實現佇列

2021-09-24 14:17:08 字數 493 閱讀 9816

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

解題思路:

兩個棧,乙個棧用於儲存資料(入棧)instack,另乙個棧用於彈出資料(出棧)outstack,入佇列則將資料儲存到instack棧中,出佇列的話,先判斷outstack棧中是否有資料,有的話直接出棧即可,若無資料,則將instack中的資料全部彈出壓入到outstack中,再出棧即可

//宣告兩個棧,乙個用於儲存資料(入棧),乙個用於彈出資料(出棧)

stackinstack = new stack();

stackoutstack = new stack();

public void push(int node)

public int pop()

else

if (outstack.count!=0)

}return r;

}

劍指offer 8 用兩個棧實現佇列

示例 1 輸入 3 輸出 null,null,3,1 th 用兩個棧,乙個棧push資料 另乙個棧pop資料 輸入資料 1 2 3 push進instack 為 3 2 1 在pop到outstack棧中 為1 2 3 和輸入資料順序一樣 時間複雜度 o 1 一次push操作 空間複雜度 o 1 乙...

劍指offer 兩個棧實現佇列

使用兩個棧實現乙個佇列。棧是先進後出,佇列是後進先出。如果只有乙個棧那麼是無法實現佇列的,但是兩個棧完全可以。如下 templateclass cqueue templatet cqueue deletehead if stack2.size 0 throw queue is empty t ret...

劍指offer 兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。棧的特點是先入後處,先出。而佇列的特點是先入先出,後出。所以我們整兩個棧,入棧的時候入第乙個。出棧的時候如果另外乙個非空,則優先處理另乙個。如果空的話,把所有的元素再 先出的放到另一棧裡,負負得正,得到了佇列的效果。c...