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(){// 创建一个整数类型的StackStack<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);}
}