用棧實現佇列,實現Enqueue和Dequeue方法

iDotNetSpace發表於2008-09-28

佇列是先進先出,棧是先進後出,使用兩個棧來模擬佇列:

入隊就是入第一個棧,出隊是把第一個棧的元素全部出棧到第二個棧裡,然後第二個棧出棧,再把剩下的倒回第一個棧。

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt 1using System;
 2using System.Collections;
 3
 4namespace Algorithm
 5用棧實現佇列,實現Enqueue和Dequeue方法{
 6    class Program
 7用棧實現佇列,實現Enqueue和Dequeue方法    {
 8        static void Main(string[] args)
 9用棧實現佇列,實現Enqueue和Dequeue方法        {
10            Queueq = new Queue();
11            q.Enqueue(1);
12            q.Enqueue(2);
13            q.Enqueue(3);
14            q.Enqueue(4);
15            Console.WriteLine(q.Dequeue());
16        }

17    }

18    class Queue
19用棧實現佇列,實現Enqueue和Dequeue方法    {
20        private Stack s1=new Stack();
21        private Stack s2=new Stack();
22
23        public void Enqueue(object o) 
24用棧實現佇列,實現Enqueue和Dequeue方法        {
25            s1.Push(o);
26        }

27        public object Dequeue() 
28用棧實現佇列,實現Enqueue和Dequeue方法        {
29            while (s1.Count > 0
30用棧實現佇列,實現Enqueue和Dequeue方法            {
31                s2.Push(s1.Pop());
32            }

33            object o = s2.Pop();
34            while (s2.Count > 0
35用棧實現佇列,實現Enqueue和Dequeue方法            {
36                s1.Push(s2.Pop());
37            }

38            return o;
39        }

40    }

41}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-466047/,如需轉載,請註明出處,否則將追究法律責任。

相關文章