C#自定义的方法实现堆栈类设计

 更新时间:2024年03月07日 08:53:17   作者:wenchm  
这篇文章主要为大家详细介绍了如何使用C#创建一个带有Push方法和Clist类的CStack类,并如何在其中添加和遍历堆栈数据,感兴趣的可以了解下

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

到此这篇关于C#自定义的方法实现堆栈类设计的文章就介绍到这了,更多相关C#堆栈类设计内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析C# 状态机Stateless

    浅析C# 状态机Stateless

    这篇文章主要介绍了C# 状态机Stateless的的相关资料,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • WPF应用程序本地化的最佳方法分享

    WPF应用程序本地化的最佳方法分享

    应用程序本地化有很多种方式,选择合适的才是最好的,这篇文章主要为大家介绍了动态资源的方式,可以在不重启应用程序的情况下进行资源的切换,需要的可以参考下
    2023-08-08
  • C#实现随机洗牌的方法

    C#实现随机洗牌的方法

    这篇文章主要介绍了C#实现随机洗牌的方法,涉及随机数操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • 使用C#实现RTP数据包传输 参照RFC3550

    使用C#实现RTP数据包传输 参照RFC3550

    本篇文章小编为大家介绍,使用C#实现RTP数据包传输 参照RFC3550,需要的朋友参考下
    2013-04-04
  • C# IDE VS2005中的Hosting Process (vshost.exe)作用介绍

    C# IDE VS2005中的Hosting Process (vshost.exe)作用介绍

    这篇文章主要介绍了C# IDE VS2005中的Hosting Process (vshost.exe)作用介绍,vshost.exe是一个宿主进程,主要用来提高调试效率,需要的朋友可以参考下
    2015-01-01
  • c#通过unicode编码判断字符是否为中文示例分享

    c#通过unicode编码判断字符是否为中文示例分享

    本文介绍了c#通过unicode编码判断字符是否为中文的示例,在unicode字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs。通过对字符的unicode编码进行判断来确定字符是否为中文
    2014-01-01
  • C#实现的简单链表类实例

    C#实现的简单链表类实例

    这篇文章主要介绍了C#实现的简单链表类,涉及C#针对链表的定义、实现及链表节点的增加、删除与修改技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#排序算法之归并排序

    C#排序算法之归并排序

    这篇文章主要为大家详细介绍了C#排序算法之归并排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • C#获取U盘序列号的方法

    C#获取U盘序列号的方法

    这篇文章主要介绍了C#获取U盘序列号的方法,涉及C#针对硬件底层信息操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • C#字符串自增自减算法详解

    C#字符串自增自减算法详解

    这篇文章主要为大家详细介绍了C#字符串自增自减的算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论