在C#中实现堆栈(Stack)数据结构,可以选择使用.NET Framework提供的System.Collections.Generic.Stack类,或者自己手动实现一个堆栈。以下是使用.NET Framework的Stack类和手动实现一个简单堆栈的示例。
使用.NET Framework的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("Top element is: " + stack.Peek());
// 移除并查看顶部元素
while (stack.Count > 0)
{
Console.WriteLine(stack.Pop());
}
Console.WriteLine("Stack is empty: " + stack.IsEmpty);
}
}
手动实现一个简单堆栈
如果你选择手动实现堆栈,可以使用数组或者链表作为底层数据存储结构。以下是使用数组实现的一个简单堆栈示例:
using System;
public class MyStack<T>
{
private T[] _array;
private int _size;
public MyStack(int capacity = 10)
{
_array = new T[capacity];
_size = 0;
}
public void Push(T item)
{
if (_size == _array.Length)
{
// 如果数组满了,需要扩容
Array.Resize(ref _array, _array.Length * 2);
}
_array[_size] = item;
_size++;
}
public T Pop()
{
if (_size == 0)
{
throw new InvalidOperationException("Stack is empty.");
}
T item = _array[_size - 1];
_array[_size - 1] = default(T); // 清除引用
_size--;
return item;
}
public T Peek()
{
if (_size == 0)
{
throw new InvalidOperationException("Stack is empty.");
}
return _array[_size - 1];
}
public bool IsEmpty()
{
return _size == 0;
}
public int Count
{
get { return _size; }
}
}
class Program
{
static void Main()
{
MyStack<int> stack = new MyStack<int>();
// 添加元素
stack.Push(1);
stack.Push(2);
stack.Push(3);
// 查看顶部元素
Console.WriteLine("Top element is: " + stack.Peek());
// 移除并查看顶部元素
while (!stack.IsEmpty())
{
Console.WriteLine(stack.Pop());
}
Console.WriteLine("Stack is empty: " + stack.IsEmpty());
}
}
想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程