C# 队列(Queue)和 堆栈(Stack)

C# 队列(Queue)和 堆栈(Stack)

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)的使用:

 1 using System;
 2 using System.Collections;
 3 
 4 namespace CollectionsApplication
 5 {
 6    class Program
 7    {
 8       static void Main(string[] args)
 9       {
10          Queue q = new Queue();
11 
12          q.Enqueue('A');
13          q.Enqueue('M');
14          q.Enqueue('G');
15          q.Enqueue('W');
16          
17          Console.WriteLine("Current queue: ");
18          foreach (char c in q)
19             Console.Write(c + " ");
20          Console.WriteLine();
21          q.Enqueue('V');
22          q.Enqueue('H');
23          Console.WriteLine("Current queue: ");         
24          foreach (char c in q)
25             Console.Write(c + " ");
26          Console.WriteLine();
27          Console.WriteLine("Removing some values ");
28          char ch = (char)q.Dequeue();
29          Console.WriteLine("The removed value: {0}", ch);
30          ch = (char)q.Dequeue();
31          Console.WriteLine("The removed value: {0}", ch);
32          Console.ReadKey();
33       }
34    }
35 }

 

当上面的代码被编译和执行时,它会产生下列结果:

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)的使用:

 1 using System;
 2 using System.Collections;
 3 
 4 namespace CollectionsApplication
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             Stack st = new Stack();
11 
12             st.Push('A');
13             st.Push('M');
14             st.Push('G');
15             st.Push('W');
16             
17             Console.WriteLine("Current stack: ");
18             foreach (char c in st)
19             {
20                 Console.Write(c + " ");
21             }
22             Console.WriteLine();
23             
24             st.Push('V');
25             st.Push('H');
26             Console.WriteLine("The next poppable value in stack: {0}", 
27             st.Peek());
28             Console.WriteLine("Current stack: ");           
29             foreach (char c in st)
30             {
31                Console.Write(c + " ");
32             }
33             Console.WriteLine();
34 
35             Console.WriteLine("Removing values ");
36             st.Pop();
37             st.Pop();
38             st.Pop();
39             
40             Console.WriteLine("Current stack: ");
41             foreach (char c in st)
42             {
43                Console.Write(c + " "); 
44             }
45         }
46     }
47 }

 

当上面的代码被编译和执行时,它会产生下列结果:

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
posted @ 2017-01-13 10:10  JiYF  阅读(21504)  评论(0编辑  收藏  举报