首页 > 开发 > 综合 > 正文

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

2024-07-21 02:22:15
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • c#数据结构篇(二)堆栈



                 作者: 寒羽狼 (dark_slaer_tang)



            烟快没有了,别人都说烟有害,但对与我可是必不可少的,呵呵。。,抽一根烟程序就写出来了,好了,再加把劲,我们再完成堆栈,其实堆栈和线性表没什么大的区别,堆栈其实是一种特殊的线性表,使用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.


    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表