C# 佇列(Queue)和 堆疊(Stack)
阿新 • • 發佈:2019-02-14
C# 佇列(Queue)
佇列(Queue)代表了一個先進先出的物件集合。當您需要對各項進行先進先出的訪問時,則使用佇列。當您在列表中新增一項,稱為入隊,當您從列表中移除一項時,稱為出隊。
Queue 類的方法和屬性
下表列出了 Queue 類的一些常用的 屬性:
屬性 | 描述 |
---|---|
Count | 獲取 Queue 中包含的元素個數。 |
下表列出了 Queue 類的一些常用的 方法:
序號 | 方法名 & 描述 |
---|---|
1 |
public virtual void Clear(); 從 Queue 中移除所有的元素。 |
2 |
public virtual bool Contains( object obj ); 判斷某個元素是否在 Queue 中。 |
3 |
public virtual object Dequeue(); 移除並返回在 Queue 的開頭的物件。 |
4 |
public virtual void Enqueue( object obj ); 向 Queue 的末尾新增一個物件。 |
5 |
public virtual object[] ToArray(); 複製 Queue 到一個新的陣列中。 |
6 |
public virtual void TrimToSize(); 設定容量為 Queue 中元素的實際個數。 |
例項
下面的例項演示了佇列(Queue)的使用:
using System; using System.Collections; namespace CollectionsApplication { class Program { static void Main(string[] args) { Queue q = new Queue(); q.Enqueue('A'); q.Enqueue('M'); q.Enqueue('G'); q.Enqueue('W'); Console.WriteLine("Current queue: "); foreach (char c in q) Console.Write(c + " "); Console.WriteLine(); q.Enqueue('V'); q.Enqueue('H'); Console.WriteLine("Current queue: "); foreach (char c in q) Console.Write(c + " "); Console.WriteLine(); Console.WriteLine("Removing some values "); char ch = (char)q.Dequeue(); Console.WriteLine("The removed value: {0}", ch); ch = (char)q.Dequeue(); Console.WriteLine("The removed value: {0}", ch); Console.ReadKey(); } } }
當上面的程式碼被編譯和執行時,它會產生下列結果:
Current queue: A M G W Current queue: A M G W V H Removing values The removed value: A The removed value: M
C# 堆疊(Stack)
堆疊(Stack)代表了一個後進先出的物件集合。當您需要對各項進行後進先出的訪問時,則使用堆疊。當您在列表中新增一項,稱為推入元素,當您從列表中移除一項時,稱為彈出元素。
Stack 類的方法和屬性
下表列出了 Stack 類的一些常用的 屬性:
屬性 | 描述 |
---|---|
Count | 獲取 Stack 中包含的元素個數。 |
下表列出了 Stack 類的一些常用的 方法:
序號 | 方法名 & 描述 |
---|---|
1 |
public virtual void Clear(); 從 Stack 中移除所有的元素。 |
2 |
public virtual bool Contains( object obj ); 判斷某個元素是否在 Stack 中。 |
3 |
public virtual object Peek(); 返回在 Stack 的頂部的物件,但不移除它。 |
4 |
public virtual object Pop(); 移除並返回在 Stack 的頂部的物件。 |
5 |
public virtual void Push( object obj ); 向 Stack 的頂部新增一個物件。 |
6 |
public virtual object[] ToArray(); 複製 Stack 到一個新的陣列中。 |
例項
下面的例項演示了堆疊(Stack)的使用:
using System;
using System.Collections;
namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
Stack st = new Stack();
st.Push('A');
st.Push('M');
st.Push('G');
st.Push('W');
Console.WriteLine("Current stack: ");
foreach (char c in st)
{
Console.Write(c + " ");
}
Console.WriteLine();
st.Push('V');
st.Push('H');
Console.WriteLine("The next poppable value in stack: {0}",
st.Peek());
Console.WriteLine("Current stack: ");
foreach (char c in st)
{
Console.Write(c + " ");
}
Console.WriteLine();
Console.WriteLine("Removing values ");
st.Pop();
st.Pop();
st.Pop();
Console.WriteLine("Current stack: ");
foreach (char c in st)
{
Console.Write(c + " ");
}
}
}
}
當上面的程式碼被編譯和執行時,它會產生下列結果:
Current stack: W G M A The next poppable value in stack: H Current stack: H V W G M A Removing values Current stack: G M A