目录

1.首先创建一个名为Clist的类

2.接下来创建一个名为CStack的类

3.最后使用CStack类和Push方法来添加和遍历堆栈数据

4.运行结果


        本实例展示了如何使用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

 */
03-07 08:30