C#使用自定义的方法设计堆栈类

目录

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

 */

相关推荐

  1. C#使用定义方法设计堆栈

    2024-03-10 17:40:04       22 阅读
  2. C++学习——模板使用定义数组

    2024-03-10 17:40:04       36 阅读
  3. 实现C++定义String

    2024-03-10 17:40:04       21 阅读
  4. vue中定义指令使用方法

    2024-03-10 17:40:04       11 阅读
  5. C++定义

    2024-03-10 17:40:04       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 17:40:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 17:40:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 17:40:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 17:40:04       20 阅读

热门阅读

  1. Hadoop proxy user

    2024-03-10 17:40:04       18 阅读
  2. 基于nodejs,使用playwright对网站进行爬虫

    2024-03-10 17:40:04       25 阅读
  3. Qt对话框介绍

    2024-03-10 17:40:04       18 阅读
  4. 【MacOS 上安装 Homebrew 】讲解

    2024-03-10 17:40:04       22 阅读
  5. Kubernetes(K8s)的架构与实现

    2024-03-10 17:40:04       25 阅读
  6. vue2和vue3

    2024-03-10 17:40:04       20 阅读
  7. 微信小程序返回上一页刷新组件数据

    2024-03-10 17:40:04       23 阅读
  8. (科目三)数据库基础知识

    2024-03-10 17:40:04       23 阅读
  9. MySQL用户创建和权限分配

    2024-03-10 17:40:04       20 阅读
  10. uniapp的扩展组件uni-popup 弹出层自动打开

    2024-03-10 17:40:04       21 阅读
  11. 秒杀的时候怎么使用Redis?

    2024-03-10 17:40:04       21 阅读
  12. 第二十六章 :Docker 内部 DNS 服务如何使用

    2024-03-10 17:40:04       22 阅读