目录
3.最后使用CStack类和Push方法来添加和遍历堆栈数据
本实例展示了如何使用C#创建一个带有Push方法和Clist类的CStack类,并如何在其中添加和遍历堆栈数据。
1.首先创建一个名为Clist的类
这是堆栈实现的基础。有两处注意的:
- 应使用List<T>.RemoveAt(Int32) 方法而不是List<T>.Remove(T) 方法,否则,后期生成的Pop方法是不起作用的。
- 为了实现堆栈的LIFO特性,遍历输出Display()方法应选择反向遍历输出。
public class Clist
{
private readonly List<int>? myList;
public Clist()
{
myList = [];
}
public void Add(int item)
{
myList!.Add(item);
}
public void RemoveAt(int item)
{
myList!.RemoveAt(item);
}
public void Clear()
{
myList!.Clear();
}
public int Count()
{
return myList!.Count;
}
public void Display()
{
for (int i = myList!.Count - 1; i >= 0; i--)
{
int item = myList[i];
Console.Write(item + " ");
}
Console.WriteLine();
}
}
2.接下来创建一个名为CStack的类
它将使用Clist类的实例来实现堆栈。
public class CStack
{
private readonly Clist mylist;
public CStack()
{
mylist = new Clist();
}
public void Push(int item)
{
mylist.Add(item);
}
public void Pop()
{
mylist.RemoveAt(mylist.Count() - 1);
}
public int Count()
{
return mylist.Count();
}
public void Display()
{
mylist.Display();
}
}
3.最后使用CStack类和Push方法来添加和遍历堆栈数据
class Program
{
static void Main(string[] args)
{
ArgumentNullException.ThrowIfNull(args);
CStack stack = new();
stack.Push(10);
stack.Push(20);
stack.Push(30);
Console.WriteLine("堆栈数量={0}", stack.Count());
stack.Display(); // 输出:30 20 10
stack.Pop();
stack.Pop();
Console.WriteLine("堆栈数量= {0}", stack.Count());
stack.Display(); // 输出:10
}
}
4.运行结果
把上面3个类,放进一个命名空间,运行结果:
//运行结果:
/*
堆栈数量=3
30 20 10
堆栈数量= 1
10
*/