題目來自劍指offer
題目:兩個佇列實現棧
思路:乙個佇列存資料,另乙個佇列作為轉存資料的臨時佇列。
注意:哪個佇列存資料不定,那個佇列作為臨時佇列也不定。
壓棧時:找到乙個有資料的佇列,放入資料。如果兩個佇列都為空,則隨便找乙個佇列存資料。
出棧時:找到那個存資料的佇列,設其資料個數為n。
(1)對數列執行 n-1 次出隊操作。
(2)把這些出隊的資料轉存到另乙個佇列中。
(3)最後那個資料即為所求,輸出。
棧滿:乙個佇列滿,則棧滿。
棧空:兩個佇列都為空,則空。
**:#include #include using namespace std;
const int size = 5;
class queue
;class stack
;queue::queue()
void queue::addtail(int ndata)
return m_queueone.removehead();
} else
return m_queuetwo.removehead(); }}
//入棧操作:
//找到乙個有資料的佇列壓入資料。
//兩個佇列都為空,隨便找乙個佇列壓入資料
void stack::push(int ndata)
else }
int stack::length()
else }
bool stack::isempty()
else }
bool stack::isfull()
else }
int main()
{ stack s;
cout<<"push: ";
for (int i = 0;i < size - 1;i++)
{ cout<
每日一題 36 用兩個棧實現佇列
題目來自劍指offer 題目 思路 設定兩個棧,乙個用來接收資料instack,乙個用來輸出資料outstack。佇列空 兩個棧都為空,則佇列空 佇列滿 接收資料的instack棧滿了,而且輸出資料的outstack棧中有資料,則滿。入隊 檢測接收資料的instack棧,是否為滿。不滿,則直接入in...
兩個棧實現佇列 兩個佇列實現棧
1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...
兩個棧實現佇列,兩個佇列實現棧
include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...