C#中的Stack(堆栈)是一种后进先出(LIFO, Last In First Out)的数据结构,用于在顶部添加和移除元素。Stack类位于System.Collections.Generic命名空间中,它允许存储特定类型的对象。以下是一些基本的Stack用法示例:
1. 创建Stack
首先,需要通过以下方式导入命名空间并创建一个Stack实例:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// 创建一个整数类型的Stack
Stack<int> myStack = new Stack<int>();
}
}
2. 向Stack添加元素(Push)
使用Push
方法向堆栈添加元素,新元素会被放置在堆栈的顶部。
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
3. 查看堆栈顶部元素(Peek)
Peek
方法允许你查看堆栈顶部的元素,但不会将其移除。
int topElement = myStack.Peek();
Console.WriteLine("Top element is: " + topElement); // 输出:Top element is: 3
4. 从堆栈移除顶部元素(Pop)
Pop
方法用于移除并返回堆栈顶部的元素。
int poppedElement = myStack.Pop();
Console.WriteLine("Popped element is: " + poppedElement); // 输出:Popped element is: 3
5. 检查堆栈是否为空(IsEmpty)
IsEmpty
属性可以用来检查堆栈是否为空。
bool isEmpty = myStack.IsEmpty;
Console.WriteLine("Is stack empty? " + isEmpty);
6. 获取堆栈的元素数量(Count)
Count
属性返回堆栈中元素的数量。
int count = myStack.Count;
Console.WriteLine("Number of elements in the stack: " + count);
完整示例
下面是一个完整的示例,演示了上述操作,这个示例展示了如何创建一个整数堆栈,向其中添加元素,查看和移除顶部元素,以及检查堆栈的状态,代码如下:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Stack<int> myStack = new Stack<int>();
myStack.Push(10);
myStack.Push(20);
myStack.Push(30);
Console.WriteLine("Initial stack:");
foreach (int item in myStack)
{
Console.Write(item + " ");
}
Console.WriteLine("\nTop element is: " + myStack.Peek());
Console.WriteLine("After popping an element:");
myStack.Pop();
foreach (int item in myStack)
{
Console.Write(item + " ");
}
Console.WriteLine("\nIs stack empty? " + myStack.IsEmpty);
Console.WriteLine("Number of elements in the stack: " + myStack.Count);
}
}