算法导论 - 基于 C# 的栈和队列实现
栈(Stack)和队列(Queue)是两种基础的数据结构,在算法设计和计算机程序中广泛使用。栈是一种后进先出(LIFO, Last In First Out)的数据结构,而队列是一种先进先出(FIFO, First In First Out)的数据结构。本文将介绍如何在 C# 中实现和使用栈和队列。
栈(Stack)
栈是一种只允许在一端进行插入和删除操作的线性表,操作受限于表的一端,这一端称为栈顶(Top of Stack)。主要操作包括压栈(Push)和弹栈(Pop)。
栈的操作
- Push:将元素压入栈顶。
- Pop:从栈顶弹出元素。
- Peek:查看栈顶元素但不弹出。
- IsEmpty:检查栈是否为空。
栈的代码实现
下面是栈的 C# 代码实现:
using System;
using System.Collections.Generic;
public class Stack<T>
{
private List<T> elements = new List<T>();
public void Push(T item)
{
elements.Add(item);
}
public T Pop()
{
if (IsEmpty())
throw new InvalidOperationException("Stack is empty");
T item = elements[elements.Count - 1];
elements.RemoveAt(elements.Count - 1);
return item;
}
public T Peek()
{
if (IsEmpty())
throw new InvalidOperationException("Stack is empty");
return elements[elements.Count - 1];
}
public bool