C#数据结构篇(二)堆栈

我们再完成堆栈,其实堆栈和线性表没什么大的区别,堆栈其实是一种特殊的线性表,使用Push 压输入数据,Pop 弹出数据,才用,先进后出的原则,就这么简单。前面已经写好了List 类,在这里我们可以调用它。代码如下:

 

using System;

 

namespace List
{
 /// <summary>
 /// 堆栈类
 /// </summary>
 
 public class CStack
 { 

 


  //调用链表类
  private  Clist m_List;
 

 

  public CStack()
  {

 

  //构造函数

 


   m_List=new Clist();

 

  }

 

  /// <summary>
  /// 压入堆栈
  /// </summary>
 
  public void Push(int PushValue)
  {
      //参数: int PushValue 压入堆栈的数据

 

      m_List.Append (PushValue);
           
  }

 

  /// <summary>
  /// 弹出堆栈数据,如果为空,则取得 2147483647 为 int 的最大值;
  /// </summary>
 
  public int Pop()
  {
  //功能:弹出堆栈数据

 

  int PopValue;
  
   if (!IsNullStack())
   {

 

    //不为空堆栈

 

    //移动到顶

 

 

 

    MoveTop();

 

    //取得弹出的数据
    PopValue=GetCurrentValue();

 

   //删除

 

    Delete();
    return PopValue;
 
   }

 

   //  空的时候为 int 类型的最大值

 

   return 2147483647;
  }

 

  /// <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>
  /// 移动到堆栈的Top
  /// </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();

 

}

 


 }
}

 

     使用先前的链表类,就可以轻松的完成堆栈类,除了基本的,Pop,Push 方法外,还提供,MoveBottom,MoveTop,MoveUp,MoveDown ,来访问堆栈中的数据,使用GetCurrentValue方法,来取得数据的值,可以执行更多的操作,呵呵,就这么简单。To Be Continue.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值