演算法刷題 8 使用兩個棧實現佇列

2021-10-22 18:51:33 字數 475 閱讀 5621

思路:建立乙個入棧,乙個出棧,乙個元素先入 「入棧」,彈出後再壓入「出棧」就可以達到先進先出的效果,等同佇列。

需要注意的點是,在刪除頭部元素方法中,一定要注意先判斷的先後順序,1.先判斷out棧是否存在元素,如果存在就直接彈出該元素,即為刪除隊尾元素

2.一定要先判斷out棧是否為空,因為如果out棧不為空,而直接判斷in棧為空而直接返回-1這種情況就錯了。

class

cqueue

public

void

(int value)

public

intdeletehead()

if(in.

isempty()

)while

(!in.

isempty()

)return out.

pop();

//最後彈出這個隊尾元素。

}}

演算法題 兩個佇列實現棧

思想 入棧 如果佇列q2為空,將資料追加到q1 如果佇列q2不為空,先將q2中資料從首部彈出追加到q1中,再將資料追加入q1 出棧 先將s1中資料從首部彈出追加到s2中,在從s2中從尾部彈出 coding utf 8 class stack object def init self self.q1 ...

演算法題 用兩個棧實現佇列

用兩個棧實現佇列 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。思路 1.stack是先進後出,而佇列是先進先出。2.stack1用於插入,運用另乙個stack2插入從stack1中彈出的資料後,資料的順序就會反轉。stack integer stack1 new...

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

1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...