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

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

C# 队列(Queue)

队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队

Queue 类的方法和属性

下表列出了 Queue 类的一些常用的 属性

属性描述
Count获取 Queue 中包含的元素个数。

下表列出了 Queue 类的一些常用的 方法

序号方法名 & 描述
1public virtual void Clear(); 
从 Queue 中移除所有的元素。
2public virtual bool Contains( object obj ); 
判断某个元素是否在 Queue 中。
3public virtual object Dequeue();
移除并返回在 Queue 的开头的对象。
4public virtual void Enqueue( object obj ); 
向 Queue 的末尾添加一个对象。
5public virtual object[] ToArray();
复制 Queue 到一个新的数组中。
6public 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 类的一些常用的 方法

序号方法名 & 描述
1public virtual void Clear(); 
从 Stack 中移除所有的元素。
2public virtual bool Contains( object obj ); 
判断某个元素是否在 Stack 中。
3public virtual object Peek();
返回在 Stack 的顶部的对象,但不移除它。
4public virtual object Pop();
移除并返回在 Stack 的顶部的对象。
5public virtual void Push( object obj );
向 Stack 的顶部添加一个对象。
6public 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

转载于:https://www.cnblogs.com/JiYF/p/6281667.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值