C 實現乙個簡單的雙棧佇列

2022-07-21 04:24:12 字數 909 閱讀 1539

雙棧佇列的原理是用兩個棧結構模擬乙個佇列, 乙個棧a模擬隊尾, 入隊的元素全部壓入此棧, 另乙個棧b模擬隊首, 出隊時將棧a的元素彈入棧b, 將棧b的棧頂元素彈出

1 #include 2

3 template 4

class

cstkqueue5;

1617

18 template 19 t cstkqueue::queuepop()

2030

31//

將入棧元素彈出並壓進出棧至僅剩乙個元素

32while (std_stack_push.size() != 1)33

3738

//將入棧僅有的乙個元素作為返回值彈出

39 temp =std_stack_push.top();

40std_stack_push.pop();

41return

temp;42}

4344 template 45

void cstkqueue::queuepush(t value)

4653

54//

元素壓棧

55std_stack_push.push(value);56}

5758 template 59 size_t cstkqueue::queuesize()

6063

64 template 65

bool cstkqueue::queueempty()

66

下面做個簡單的測試

結果如下

實現乙個雙緩衝佇列

在生產者 消費者模式中,我們常常會使用到佇列,這個佇列在多個執行緒共享訪問時存在互斥和競爭操作,意味著每次訪問都要加鎖。如何更好的如何減少鎖競爭次數呢 今天要介紹的雙緩衝佇列就是個不錯的選擇。雙緩衝佇列就是衝著同步 互斥的開銷來的。我們知道,在多個執行緒併發訪問同乙個資源的時候,需要特別注意執行緒的...

實現乙個雙緩衝佇列

在生產者 消費者模式中,我們常常會使用到佇列,這個佇列在多個執行緒共享訪問時存在互斥和競爭操作,意味著每次訪問都要加鎖。如何更好的如何減少鎖競爭次數呢 今天要介紹的雙緩衝佇列就是個不錯的選擇。雙緩衝佇列就是衝著同步 互斥的開銷來的。我們知道,在多個執行緒併發訪問同乙個資源的時候,需要特別注意執行緒的...

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

這兩個題的思路比較相似。棧的特點是 先進後出 佇列的特點是 先進先出 不要怕!用兩個棧實現乙個佇列很簡單 再將top元素push到stack 2中,然後將stack 1 pop一次直到stack 1剩下最後乙個元素,這個就是最先push進去的,我們把它pop掉就可以了,同理,我們求queue的fro...