兩個佇列生成乙個棧

2021-08-19 09:51:31 字數 1301 閱讀 7442

package佇列;

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

* * 思路:佇列1和佇列2在任意時刻至少有乙個為空,即如果有元素,所有元素只能在乙個佇列中。當有元素需要插入時,將元素插入到

* 空佇列

中,並將另一非空佇列的所有元素全部轉移到該佇列中,於是,插入的元素新增到了對列的最前面

* *@authoradministrator**/

publicclassstack

/** * 新增元素

*/publicvoidpush(int

data

)

}else

}

}

/** * 從棧取元素

*@return

*/publicinteger pop()

if(!

queue1

.isempty())else

}

/** * 取峰值

*@return

*/publicinteger peek()

if(!

queue1

.isempty())else

}

/** * 主函式

*@paramargs

*/publicstaticvoidmain(string

args

)

}

}

兩個棧模擬乙個佇列 兩個佇列模擬乙個棧

解題思路 插入操作在stack1中進行,刪除操作在stack2中進行,如果stack2為空,則將stack1中的所有元素轉移到stack2中。include include includeusing namespace std template class cqueue 建構函式 template ...

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

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

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

1 兩個棧實現乙個佇列 入隊時,直接壓入stack1中。出隊時,判斷stack2是否為空,如果stack2為空,則將stack1中的元素倒入stack2中,否則直接彈出stack2中的元素。入隊操作 void enqueue stack s1,stack s2,int m 出隊操作 void deq...