C#堆栈的实现

C#数据结构——堆栈的实现

堆栈的简单说明:栈是一种重要的数据结构。从数据结构的角度看,栈也是线性表,其特殊性在于栈的基本操作是线性表操作的子集,它们是操作受限的线性表,因此可以称为限定性的数据结构。本实例用C#实现了栈的数据结构,并编译为类库供大家以后使用。

关键技术

栈是限定仅在表尾进行插入或删除操作的线性表。因此对栈来说,表尾端有其特殊含义,称为“栈顶(top)”,相应地,表头端称为“栈底(bottom)”,不含元素的空表称为空栈。栈的修改是按照后进先出的原则进行的。因此栈又称为后进先出的(last in first out)的线性表,在实现栈的数据结构时一定要注意这个特点。栈的基本操作除了在栈顶进行插入或删除外,还有栈的初始化,判断是否为空以及取栈顶元素等。

设计过程

(1)打开Visual Studio 开发环境,新建一个类库项目,命名为StackApply。
(2)将“Class1.cs”文件重命名为“CStack.cs”。
(3)程序主要代码如下:

public class CStack
{
    private Clist m_List;                                   //调用链表类
    public CStack()
    {
        m_List = new Clist();                               //构造函数
   }
    /// <summary>
    /// 压入堆栈
    /// </summary>
    public void Push(int PushValue)
    {
       m_List.Append(PushValue);                            //参数:int PushValue压入堆栈的数据
    }
    /// <summary>
    /// 弹出堆栈数据,如果为空,则取得 2147483647 为 int 的最大值
    /// </summary>
    public int Pop()
    {
        int PopValue;                                   //功能:弹出堆栈数据
        if (!IsNullStack())                                 //不为空堆栈
        {
           MoveTop();                                   //移动到顶
            PopValue = GetCurrentValue();                       //取得弹出的数据
           Delete();                                    //删除
            return PopValue;
        }
        return 2147483647;                                  //空的时候为int类型的最大值
    }
    /// <summary>
    /// 判断是否为空的堆栈
    /// </summary>
    public bool IsNullStack()
    {
        if (m_List.IsNull())
        return true;
        return false;
    }
    /// <summary>
    /// 堆栈的个数
    /// </summary>
    public int StackListCount
    {
        get
        {
            return m_List.ListCount;
        }
    }
    /// <summary>
    /// 移动到堆栈的底部
    /// </summary>
    public void MoveBottom()
    {
       m_List.MoveFrist();
    }
    /// <summary>
    /// 移动到堆栈的顶部
    /// </summary>
    public void MoveTop()
    {
        m_List.MoveLast();
    }
    /// <summary>
    /// 向上移动
    /// </summary>
    public void MoveUp()
    {
        m_List.MoveNext();
    }
    /// <summary>
    /// 向上移动
    /// </summary>
    public void MoveDown()
    {
        m_List.MovePrevious();
    }
    /// <summary>
    /// 取得当前的值
    /// </summary>
    public int GetCurrentValue()
    {
        return m_List.GetCurrentValue();
    }
    /// <summary>
    /// 删除取得当前的结点
    /// </summary>
    public void Delete()
    {
        m_List.Delete();
    }
    /// <summary>
    /// 清空堆栈
    /// </summary>
    public void Clear()
    {
       m_List.Clear();
    }
}

技巧与心得

C#中的堆栈类——Stack类。C#中提供了堆栈类,用Stack类来表示,该类表示对象的简单的后进先出非泛型集合,其位于System.Collections命名空间下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋洋脚踝的金铃响了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值