C#中的栈和队列


Stack 类表示对象的“后进先出”集合。当您需要后进先出的项目访问方式时,可以使用它。

以下是 Stack 类的属性:

  • **Count** - 获取栈中元素的数量。

以下是 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 类及其 Push() 和 Pop() 方法:

示例

 在线演示

using System;
using System.Collections;

namespace CollectionsApplication {
   class Program {
      static void Main(string[] args) {
         Stack st = new Stack();

         st.Push('A');
         st.Push('B');
         st.Push('C');
         st.Push('D');

         Console.WriteLine("Current stack: ");
         foreach (char c in st) {
            Console.Write(c + " ");
         }

         Console.WriteLine();

         st.Push('P');
         st.Push('Q');
         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:
D C B A
The next poppable value in stack: Q
Current stack:
Q P D C B A
Removing values....
Current stack:
C B A

队列

Queue 集合类是 C# 中的一个概念,包含在 System.Collection 命名空间中。元素以 FIFO(先进先出)的方式存储在队列中。添加的第一个元素将是第一个出去的元素,就像电影院外面买票的人排队一样。

它有两个方法:

  • Enqueue() 方法用于添加值
  • Dequeue() 方法用于检索值

Enqueue

在队列中添加项目。

Queue q = new Queue();
q.Enqueue(“Two”);
q.Enqueue(“One”);

Dequeue

从队列中返回项目。

Queue q = new Queue();
q.Enqueue(“Two”);
q.Enqueue(“One”);

// remove elements
while (q.Count > 0)
Console.WriteLine(q.Dequeue());

更新于:2020年6月20日

5K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.