程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#數據結構篇(二 堆棧) killertang

C#數據結構篇(二 堆棧) killertang

編輯:關於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.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved