用兩個佇列(Queue)實現一個棧(Stack)
阿新 • • 發佈:2019-02-20
class Stack2 { private Queue<int> q1; private Queue<int> q2; public Stack2() { q1 = new Queue<int>(); q2 = new Queue<int>(); } public void Push(int x) { q1.Enqueue(x); } public int Pop() { if (q1.Count == 0) { if (q2.Count == 0) { throw new Exception("為空"); } else { while (q2.Count > 1) { q1.Enqueue(q2.Dequeue()); } return q2.Dequeue();//出隊 } } while (q1.Count > 1) { q2.Enqueue(q1.Dequeue()); } return q1.Dequeue();//出隊 } public void write() { foreach (var q in q2) { Console.Write(q); Console.Write(","); } foreach (var q in q1) { Console.Write(q); Console.Write(","); } Console.WriteLine(); } }