1. 程式人生 > >用兩個佇列(Queue)實現一個棧(Stack)

用兩個佇列(Queue)實現一個棧(Stack)

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();
        }
    }