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

2021-06-29 01:53:38 字數 912 閱讀 3699

**:

1. 用兩個堆疊實現乙個佇列。

思路:對於insert,把資料插入到第乙個堆疊中;

對於remove,如果第二個堆疊為空,把第乙個堆疊的所有元素pop出來並放入第二個堆疊中,然後返回第二個堆疊的第乙個元素。

// implement queue by 2 stacks

using namespace std;

class queueby2s

int getsize()

void enqueue(int n)

void dequeue()

ret = s2.pop();

--len;

return ret; }

} };

2. 用兩個佇列實現乙個棧。

思路:對於push: 如果兩個佇列都為空,就插入到第乙個佇列中;否則就插入到非空的那個佇列中;

對於pop: 把非空的那個佇列的每個元素remove出來,然後插入到另乙個佇列中,直到剩下最後乙個元素,然後將其返回。

//implement stack by 2 queues

class stackby2q

int getsize()

void push(int n)

else if(q1.size() > 0)

q1.enqueue(n);

else if(q2.size() > 0)

q2.enqueue(n);

++len; }

int pop()

else // q1 is empty

} };3. 用1個棧實現乙個佇列。

思路:用遞迴的方法把資料從最底部移出來。

4.用1個佇列實現乙個棧。

思路: 對於每次pop,用遞迴的方法反轉佇列元素的排列,然後返回第乙個元素。

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

template class cqueue 14 template 1516 19 template 20 t cqueue deletehead 2132 33 stack2不為空則直接輸出 34 t r value stack2.top 35stack2.pop 36return r value...

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

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

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

pragma once要在標頭檔案的最開始加入這條雜注,就能夠保證標頭檔案只被編譯一次 pragma once是編譯器相關的,就是說即使這個編譯系統上有效,但在其他編譯系統也不一定可以,不過現在基本上已經是每個編譯器都有這個雜注了。用兩個棧實現佇列 每個模板函式的實現都需要加template模板列表...