日期:2011-02-14  浏览次数:20450 次

C#数据结构篇(一)线性表



          作者: 寒羽狼 (Dark_Slaer_Tang)







            最近,马子跑了,你说女人老是容易翻脸。。。,看来做程序员必定要 “茕茕孑立,行影相吊”悲惨命运了。还是老老实实编程吧,我发现用c# 编一些数据接结构的类也瞒不错的,于是想把数据结构的算法,用C#重写一遍,打发无聊的时光,下面是数据结构中的链表的实现。



       首先定义结点类型,定义了,前一个指针域,后一个指针域,如下:







using System;



namespace List
{
/// <summary>
/// Summary description for ListNode.
/// </summary>



// 结点类




public class ListNode
{
  public ListNode(int NewValue)
  {
   Value=NewValue;
  }



  /// <summary>
  /// 前一个
  /// </summary>



     
  public ListNode Previous;




  /// <summary>
  /// 后一个
  /// </summary>




  public ListNode Next;




  /// <summary>
  /// 值
  /// </summary>




  public int Value;
}
}



using System;

namespace List
{


/// <summary>
/// 链表类
/// </summary>

定义结点之后,开始类线性表的操作编程了.在LIST 类中,采用了,Head ,Tail,  Current,三个指针,使用Append ,MoveFrist,MovePrevious,MoveNext,MoveLast ,Delete,InsertAscending,InsertUnAscending ,Clear 实现移动,添加,删除,升序插入,降序插入,清空链表操作,GetCurrentValue() 方法取得当前的值。


public class Clist
{
  public Clist()

  {

   //构造函数

   //初始化


   ListCountValue=0;

   Head=null;

   Tail=null;


  }


  /// <summary>
  /// 头指针
  /// </summary>


  private ListNode Head;


  /// <summary>
  /// 尾指针
  /// </summary>
  
  private ListNode Tail;

  /// <summary>
  /// 当前指针
  /// </summary>
  
  private ListNode Current;

  /// <summary>
  /// 链表数据的个数
  /// </summary>
  
  private int ListCountValue;

  /// <summary>
  /// 尾部添加数据
  /// </summary>

  public void Append(int DataValue )
  {
   ListNode NewNode=new ListNode( DataValue);
   
   if (IsNull())  

   //如果头指针为空

   {
    Head=NewNode;

    Tail=NewNode;
    
   }
   else
   {
    Tail.Next =NewNode;

    NewNode.Previous =Tail;

    Tail=NewNode;
    
   }

   Current=NewNode;

   //链表数据个数加一

   ListCountValue+=1;

  }
         
  /// <summary>
  /// 删除当前的数据
  /// </summary>


  public void Delete()
  {   
   //若为空链表

   if ( ! IsNull())