題目:用兩個棧實現(xiàn)一個隊列士袄。隊列的聲明如下,請實現(xiàn)它的兩個函數(shù)appendTail和deleteHead,分別完成在隊列尾部插入結(jié)點和在隊列頭部刪除結(jié)點的功能样刷。
public class CQueue
{
private Stack<int> stack1;
private Stack<int> stack2;
public CQueue()
{
stack1=new Stack<int>();
stack2=new Stack<int>();
}
public void AppendTail(int value)
{
stack1.Push(value);
}
public int DeleteHead()
{
if (stack2.Count==0)
{
while (stack1.Count>0)
{
stack2.Push(stack1.Pop());
}
}
if (stack2.Count == 0)
return -1;
return stack2.Pop();
}
}
stack2 中不為空時蒜撮,在 stack2 中的棧頂元素是最先進入隊列的元素暴构,可以彈出。如果stack2為空時段磨,我們把stack1中的元素逐個彈出并壓入stack2取逾。由于先進入隊列的元素被壓到stack1的底端,經(jīng)過彈出和壓入之后就處于stack2的頂端了苹支,又可以直接彈出菌赖。