以下是详细讲解“C#中泛型容器Stack
Stack的用法
Stack
Stack
- Push(T item):将一个元素压入栈中
- Pop():将栈顶的元素弹出并返回
- Peek():返回栈顶的元素但不弹出
- Clear():清空栈中的元素
- Count:获取栈中元素的数量
以下是一个示例程序,演示如何使用Stack
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
Stack<int> intStack = new Stack<int>();
intStack.Push(1);
intStack.Push(2);
intStack.Push(3);
Console.WriteLine(intStack.Pop()); // 输出3
Console.WriteLine(intStack.Peek()); // 输出2
Console.WriteLine(intStack.Count); // 输出2
intStack.Clear();
Console.WriteLine(intStack.Count); // 输出0
}
}
实现撤销/重做功能
撤销/重做功能是软件中常见的功能之一,可以让用户在进行操作后,可以恢复到之前的状态或重新进行这些操作。
以下是一个示例程序,演示如何使用Stack
using System;
using System.Collections.Generic;
class Program
{
static Stack<string> historyStack = new Stack<string>();
static Stack<string> redoStack = new Stack<string>();
static void Main(string[] args)
{
Console.WriteLine("请输入您要撤销/重做的操作:");
string input = Console.ReadLine();
while (input != "quit")
{
if (input == "undo")
{
if (historyStack.Count == 0)
{
Console.WriteLine("无法进行撤销操作!");
}
else
{
string lastOperation = historyStack.Pop();
redoStack.Push(lastOperation);
Console.WriteLine($"已撤销操作:{lastOperation}");
}
}
else if (input == "redo")
{
if (redoStack.Count == 0)
{
Console.WriteLine("无法进行重做操作!");
}
else
{
string lastOperation = redoStack.Pop();
historyStack.Push(lastOperation);
Console.WriteLine($"已重做操作:{lastOperation}");
}
}
else
{
historyStack.Push(input);
Console.WriteLine($"已执行操作:{input}");
redoStack.Clear();
}
Console.WriteLine("请输入您要撤销/重做的操作:");
input = Console.ReadLine();
}
}
}
在以上示例代码中,我们使用了两个Stack
在用户输入操作时,如果输入“undo”,则从historyStack中弹出最后一个操作并存储到redoStack中,表示可以进行重做操作;如果输入“redo”,则从redoStack中弹出最后一个操作并存储回到historyStack中,表示可以重新执行该操作;否则,将该操作存储到historyStack中,并清空redoStack,表示不能进行重做操作。
这样,我们就完成了“C#中泛型容器Stack
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中泛型容器Stack