**:
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模板列表...