兩個佇列新增元素,哪個隊列為空,由於在輸出元素時,要進行相應元素的移動(除去尾部元素),所以要在對應不為空的佇列進行元素的新增;在輸出資料時,要進行兩個佇列的變相操作,不為空的佇列要依次向為空的佇列中新增元素,直到尾元素輸出即可!
* 兩個佇列實現乙個棧
* */
public
class
twoqueueimplstack
//如果queue1為空,queue2有資料,直接放入queue2
if(queue1.
isempty()
)//如果queue2為空,queue1有資料,直接放入queue1中
if(queue2.
isempty()
)}/* * 從棧中彈出乙個資料
*/public integer pop()
catch
(exception e)
}//如果queue1中沒有元素,queue2中有元素,將其queue2中的元素依次放入queue1中,直到最後乙個元素,彈出即可
if(queue1.
isempty()
)return queue2.
poll()
;}//如果queue2中沒有元素,queue1中有元素,將其queue1中的元素依次放入queue2中,直到最後乙個元素,彈出即可
if(queue2.
isempty()
)return queue1.
poll()
;}return
(integer)null;
}public
static
void
main
(string[
] args)
}(二)兩個棧實現乙個佇列:
第乙個棧只負責新增元素,第二個棧在彈出元素時,首先判斷當前棧是否為空,若為空就直接將其第乙個棧中的資料全部壓入第二個棧中,然後輸出棧頂元素,即可實現佇列效果;若第二個棧中有資料,新增直接將其資料壓入第乙個棧中,輸出時直接輸出第二個棧頂的元素即可!
* 兩個棧實現乙個佇列
* */
public
class
twostackimplqueue
/* * 佇列的資料彈出過程
*/public integer pop()
}if(stack2.
isempty()
)catch
(exception e)
} integer head = stack2.
pop();
return head;
}public
static
void
main
(string[
] args)
}
兩個佇列實現棧和兩個棧實現佇列
棧 先進後出 佇列 先進先出 1 兩個佇列實現棧 佇列a 佇列b 入棧 入佇列a,1,2,3,4 入棧,在佇列a裡為 a 1,2,3,4 出棧,將佇列a中的元素入佇列b直到佇列a裡的元素只剩下乙個,則隊a為4,隊b為1,2,3,a 4,b 1,2,3,輸出a隊頭4 include include u...
兩個佇列實現棧和兩個棧實現佇列
棧 先進後出 佇列 先進先出 1 兩個佇列實現棧 佇列a佇列b 入棧 入佇列a,1,2,3,4 入棧,在佇列a裡為 a 1,2,3,4 出棧,將佇列a中的元素入佇列b直到佇列a裡的元素只剩下乙個,則隊a為4,隊b為1,2,3,a 4,b 1,2,3,輸出a隊頭4 include include us...
兩個棧實現佇列 兩個佇列實現棧
1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...