C#資料結構篇(二 堆疊) (轉)

worldblog發表於2007-12-13
C#資料結構篇(二 堆疊) (轉)[@more@]

  資料結構篇(二)堆疊


  作者: 寒羽狼 (Dark_Slaer_Tang)


 煙快沒有了,別人都說煙有害,但對與我可是必不可少的,呵呵。。,抽一根菸就寫出來了,好了,再加把勁,我們再完成堆疊,其實堆疊和線性表沒什麼大的區別,堆疊其實是一種特殊的線性表,使用Push 壓輸入資料,Pop 彈出資料,才用,先進後出的原則,就這麼簡單。前面已經寫好了List 類,在這裡我們可以它。程式碼如下:


using System;


namespace List
{
 ///


 /// 堆疊類
 ///

 
 public class CStack
 { 



 //呼叫連結串列類
 private  Clist m_List;
 


 public CStack()
 {


  //構造



 m_List=new Clist();


 }


 ///


 /// 壓入堆疊
 ///

 
 public void Push(int PushValue)
 {
 //引數: int PushValue 壓入堆疊的資料


  m_List.Append (PushValue);
 
 }


 ///


 /// 彈出堆疊資料,如果為空,則取得 2147483647 為 int 的最大值;
 ///

 
 public int Pop()
 {
 //功能:彈出堆疊資料 


  int PopValue;
 
 if (!IsNullStack())
 {


  //不為空堆疊


  //移動到頂


 


 MoveTop();


  //取得彈出的資料
 PopValue=GetCurrentValue();


  //刪除


  Delete();
 return PopValue;
 
 }


 //  空的時候為 int 型別的最大值


 return 2147483647;
 }


 ///


 /// 判斷是否為空的堆疊
 ///

 
 public bool IsNullStack()
 { 
 
 if ( m_List.IsNull() )
 return true ;


 return false ;
 }


 ///


 /// 堆疊的個數
 ///


 public int StackListCount
 { 


 
 get
 {
 return m_List.ListCount ;
 }
 
 }


 ///


 /// 移動到堆疊的底部
 ///


 public void MoveBottom()
 {


 m_List.MoveFrist ();
 }


 ///


 /// 移動到堆疊的Top
 ///

 
 public void MoveTop()
 {
 m_List.MoveLast  ();
 }


 ///


 /// 向上移動
 ///

 
 public void MoveUp()
 {
 m_List.MoveNext();
 }


 ///


 /// 向上移動
 ///

 
 public void MoveDown()
 {
 m_List.MovePrevious() ;
 }


 ///


 /// 取得當前的值
 ///

 
  public int  GetCurrentValue()
 {
 return m_List.GetCurrentValue ();
 }


 ///


 /// 刪除取得當前的結點
 ///

 
 public void Delete()
 {
 m_List.Delete ();
 }


  ///


 /// 清空堆疊
 ///



 public void Clear()


{


  m_List.Clear();


}



 }
}


  使用先前的連結串列類,就可以輕鬆的完成堆疊類,除了基本的,Pop,Push 方法外,還提供,MoveBottom,MoveTop,MoveUp,MoveDown ,來訪問堆疊中的資料,使用GetCurrentValue方法,來取得資料的值,可以更多的操作,呵呵,就這麼簡單。To Be Continue.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992491/,如需轉載,請註明出處,否則將追究法律責任。

相關文章