1. 程式人生 > >C# 系統集合泛型(System.Collections.Generic) Queue, Stack

C# 系統集合泛型(System.Collections.Generic) Queue, Stack

C# 在系統集合泛型(System.Collections.Generic) 還包含 佇列(Queue)及堆疊(Stack)

這裡先簡單總結一下兩者的差異

佇列(Queue) 屬於先進先出(FIFO)的集合,例如: 一群人在排隊等公車,先來的就可以先上車。

堆疊(Stack) 屬於後進先出 (LIFO)的集合,例如: 將大箱子放入貨車櫃,最後放進去的,到時會最先取出來; 將子彈裝進彈匣,最後裝進去的會先擊發。

接下來,兩者說明如下:

佇列(Queue)

佇列(Queue) 屬於先進先出(FIFO)的集合
例如: 一群人在排隊等公車,先來的就可以先上車。

Queue<型別引數T> 變數名稱 = new Queue<型別引數T>();

常用的 Queue 方法與屬性
(假設,變數名稱為 myQueue)

方法/屬性 說明 用法
Enqueue 增加一個元素 myQueue.Enqueue(值)
Dequeue 取出並移除第一個元素 myQueue.Dequeue()
Count 取得元素總數 myQueue.Count
Peek 取出第一個元素,但不移除 myQueue.Peek()
Clear 移除所有元素 myQueue.Clear()
ToArray 將 Queue 專案建立新的陣列 myQueue.ToArray()
TrimExcess() 如果元素已經少於一開始的90%,就調整 Queue 容量大小 myQueue.TrimExcess()

(完整Queue方法/屬性可以參考官方檔案

範例:

using System;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
                //初始化 Queue 類別
            Queue<string> mydemoQueue = new Queue<string
>(); //Enqueue 將物件加入至 Queue 的末端 mydemoQueue.Enqueue("Adam"); mydemoQueue.Enqueue("Brown"); mydemoQueue.Enqueue("Candy"); mydemoQueue.Enqueue("Denny"); while(mydemoQueue.Count >0) { //移除並傳回在 Queue 開頭的物件。 Console.WriteLine(mydemoQueue.Dequeue()); } mydemoQueue.Clear(); /* 結果: 先進先出(FIFO) Adam Brown Candy Denny */ } } }

堆疊(Stack)

堆疊(Stack) 屬於後進先出(LIFO)的集合
例如: 將大箱子放入貨車櫃,最後放進去的,到時會最先取出來; 將子彈裝進彈匣,最後裝進去的會先擊發。

Stack<型別引數T> 變數名稱 = new Stack<型別引數T>();

常用的 Stack 方法與屬性
(假設,變數名稱為 mydemoStack)

方法/屬性 說明 用法
Push 頂端(最後面)增加一個元素 mydemoStack.Push(值)
Pop 取出頂端(最後面)第一個元素,並移除 mydemoStack.Pop()
Count 取得元素總數 mydemoStack.Count
Peek 取出頂端(最後面)第一個元素,但不移除 mydemoStack.Peek()
Clear 移除所有元素 mydemoStack.Clear()
ToArray 將 Stack 專案建立新的陣列 mydemoStack.ToArray()
TrimExcess() 如果元素已經少於一開始的90%,就調整 Stack 容量大小 mydemoStack.TrimExcess()

(完整Stack方法/屬性可以參考官方檔案

範例:

using System;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化 Stack 類別
            Stack<string> mydemoStack = new Stack<string>();

            //Push 將物件插入 Stack<T> 的頂端。
            mydemoStack.Push("Adam");
            mydemoStack.Push("Brown");
            mydemoStack.Push("Candy");
            mydemoStack.Push("Denny");
            while (mydemoStack.Count > 0)
            {
                //移除並傳回頂端的物件 Stack<T>。
                Console.WriteLine(mydemoStack.Pop());
            }
            mydemoStack.Clear();
        }
    }
}

如果你喜歡我們的文章內容,請在這裡按個讚