數據結構——隊列與棧

圖解隊列與棧:

代碼示例:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;//要使用隊列(Queue),必須使用該名稱空間。namespace queueAndStack{ class Program { static void Main(string[] args) { Console.WriteLine("*******************************************************"); Console.WriteLine("*******************************************************"); Console.WriteLine("隊列的測試:"); Queue q = new Queue(); q.Enqueue(1);//queue.Enqueue(Obj n)就是push(壓入)成員進隊列里。 q.Enqueue("Nobita");//同一個隊列里可以放不同的成員類型。 q.Enqueue("Shisuka"); q.Enqueue(2); foreach (Object obj in q) { Console.WriteLine(obj.ToString()); } Console.WriteLine("=================="); Console.WriteLine("當前隊列成員數量:" + q.Count);//統計隊列的數量 q.Dequeue(); string name = q.Dequeue().ToString();//將被彈出的成員用一個字元串接收了。 Console.WriteLine("字元串所接收的彈出的成員:" + name); Console.WriteLine("彈出兩個成員之後,當前隊列成員數量:" + q.Count);//通過對隊列的兩次統計,發現,隊列的空間是動態變化的。 Console.WriteLine("==================");//通過對隊列的兩次統計,發現,隊列的空間是動態變化的。 Console.WriteLine("當前成員列表:");//通過對隊列的兩次統計,發現,隊列的空間是動態變化的。 foreach (Object obj2 in q) { Console.WriteLine(obj2.ToString()); } Console.WriteLine("*******************************************************"); Console.WriteLine("*******************************************************"); Console.WriteLine("棧的測試:"); Stack s = new Stack(); s.Push(1);//Stack.Push(Obj n)就是push(壓入)成員進隊列里。 s.Push(2); s.Push("Nobita"); s.Push("Shisuka"); foreach (Object 成員 in s) { Console.WriteLine(成員.ToString()); } Console.WriteLine("=================="); Console.WriteLine("當前棧的成員數量:" + s.Count);//統計隊列的數量 string 被彈出的成員 = s.Pop().ToString();//從最開頭(或叫」最上層「更易理解)的成員開始彈出的。 Console.WriteLine("被彈出的成員:" + 被彈出的成員); Console.WriteLine("彈出後的棧成員數量:" + s.Count);//統計隊列的數量 Console.WriteLine("這時候的棧成員列表:"); foreach (Object obj3 in s) { Console.WriteLine(obj3.ToString()); } } }}

運行結果:

推薦閱讀:

寫時拷貝 Copy-On-Write
B+Tree的持久化
數據結構3.3
浙江大學-數據結構-堆排序-9.3.2
浙江大學-數據結構-歸併排序-9.4.1

TAG:演算法 | 數據結構 |