C#数据结构与算法揭秘五 栈和队列


在C#中,栈(Stack)和队列(Queue)是两种非常基础且常用的数据结构,它们分别遵循后进先出(LIFO, Last In First Out)和先进先出(FIFO, First In First Out)的原则。下面我会简要介绍如何在C#中使用这两种数据结构。

### 栈(Stack)

C#中的`System.Collections.Generic`命名空间提供了`Stack`类,它表示一个对象的后进先出集合。

#### 示例代码


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Stack<int> stack = new Stack<int>();

        // 入栈
        stack.Push(1);
        stack.Push(2);
        stack.Push(3);

        // 查看栈顶元素
        Console.WriteLine($"栈顶元素: {stack.Peek()}");

        // 出栈
        while (stack.Count > 0)
        {
            Console.WriteLine($"出栈元素: {stack.Pop()}");
        }
    }
}

### 队列(Queue)

同样地,`System.Collections.Generic`命名空间也提供了`Queue`类,表示一个对象的先进先出集合。

#### 示例代码


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Queue<int> queue = new Queue<int>();

        // 入队
        queue.Enqueue(1);
        queue.Enqueue(2);
        queue.Enqueue(3);

        // 查看队首元素
        Console.WriteLine($"队首元素: {queue.Peek()}");

        // 出队
        while (queue.Count > 0)
        {
            Console.WriteLine($"出队元素: {queue.Dequeue()}");
        }
    }
}

在这两个示例中,我展示了如何在C#中创建栈和队列的实例,以及如何进行入栈(入队)和出栈(出队)操作。同时,我也展示了如何查看栈顶或队首的元素,而不移除它们。这些基本操作是理解和使用栈和队列的关键。