日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#实现链表

發布時間:2023/12/9 C# 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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())
???{
????//若刪除頭

????if (IsBof())
????{
?????Head=Current.Next ;

?????Current=Head;

?????ListCountValue-=1;

?????return;
????}

????//若刪除尾

????if (IsEof())
????{?
?????Tail=Current.Previous ;

?????Current=Tail;

?????ListCountValue-=1;

?????return;
????}

????//若刪除中間數據

????Current.Previous.Next =Current.Next ;

????Current=Current.Previous ;

????ListCountValue-=1;

????return;
???}

????
??}


??/// <summary>
??/// 向后移動一個數據
??/// </summary>


??public void MoveNext()
??{
???? if (! IsEof()) Current=Current.Next ;
??}
??/// <summary>
??/// 向前移動一個數據
??/// </summary>
??
??public void MovePrevious()
??{
???if (!IsBof()) Current=Current.Previous? ;
??}

??/// <summary>
??/// 移動到第一個數據
??/// </summary>
??
??public void MoveFrist()
??{
??? Current=Head;
??}

??/// <summary>
??/// 移動到最后一個數據
??/// </summary>


??public void MoveLast()
??{
???Current=Tail;
??}

??/// <summary>
??/// 判斷是否為空鏈表
??/// </summary>


??public bool IsNull()
??{
???if (ListCountValue==0)
???return true;

???return false;
??}

??/// <summary>
??/// 判斷是否為到達尾部
??/// </summary>
??
??public bool IsEof()
??{
???if( Current? ==Tail )
???return true;

???return false;
??}

??/// <summary>
??/// 判斷是否為到達頭部
??/// </summary>
??

??public bool IsBof()
??{
???if( Current ==Head)
????return true;

????? return false;

??}

??public int GetCurrentValue()
??{
???
???return Current.Value ;

??}
???????
??/// <summary>
??/// 取得鏈表的數據個數
??/// </summary>
??
??public int ListCount
??{
???get
???{
????return ListCountValue;
???}
??}

??/// <summary>
??/// 清空鏈表
??/// </summary>
??
??public void Clear()
??{??
???MoveFrist();
???while (!IsNull())
???{
????//若不為空鏈表,從尾部刪除
?????
????Delete();

???}
??}

??/// <summary>
??/// 在當前位置前插入數據
??/// </summary>
??
??public void Insert(int DataValue)
???
??{
???ListNode NewNode=new? ListNode (DataValue);
???if(IsNull())
???{??
????//為空表,則添加

????Append(DataValue);

????return;

???}

???if (IsBof())
???{
?????????????? //為頭部插入

????? NewNode.Next =Head;

????? Head.Previous =NewNode;

????? Head=NewNode;

????? Current=Head;

????? ListCountValue+=1;

????? return;
???}

???//中間插入
???????????
???????????
???NewNode.Next =Current;

???NewNode.Previous =Current.Previous ;

???Current.Previous.Next =NewNode;

???Current.Previous =NewNode;
??????????
???Current=NewNode;

???ListCountValue+=1;

??}

??/// <summary>
??/// 進行升序插入
??/// </summary>
??
??public void InsertAscending(int InsertValue)
??{
??????????? //參數:InsertValue 插入的數據
???????????
???????????
??????????? //為空鏈表

???if (IsNull())
???{??
????//添加

????Append(InsertValue);

????return;

???}

??????????? //移動到頭

??????????? MoveFrist();
???????????
???if ((InsertValue<GetCurrentValue()))
?? ??{??
????//滿足條件,則插入,退出

????Insert(InsertValue);

????return;

???}

????? while(true)

???{??
?
????if (InsertValue<GetCurrentValue())
????{

?????//滿族條件,則插入,退出

?????Insert(InsertValue);

?????break;

????}

????if (IsEof())
????{??
?????//尾部添加

?????Append(InsertValue);

?????break;

????}

??????????????? //移動到下一個指針

????MoveNext();

???}
??? ?}


??/// <summary>
??/// 進行降序插入
??/// </summary>


??public void InsertUnAscending(int InsertValue)
??{
???//參數:InsertValue 插入的數據
???????????
???????????
???//為空鏈表

???if (IsNull())
???{??
????//添加

????Append(InsertValue);

????return;

???}

???//移動到頭

???MoveFrist();
???????????
???if (InsertValue>GetCurrentValue())
???{??
????//滿足條件,則插入,退出

????Insert(InsertValue);

????return;

???}

???while(true)

???{??
?
????if (InsertValue>GetCurrentValue())
????{

?????//滿族條件,則插入,退出

?????Insert(InsertValue);

?????break;

????}

????if (IsEof())
????{??
?????//尾部添加

?????Append(InsertValue);

?????break;

????}

????//移動到下一個指針

????MoveNext();

???}
??}
?}
}
?



?????? 好了,一個簡單的鏈表類實現了,當然還有許多的功能,可以根據自己的需要添加就好了。TO BE CONTINUE 。


posted on 2007-01-31 09:20 zwgood 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/zw0736/archive/2007/01/31/635391.html

總結

以上是生活随笔為你收集整理的c#实现链表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。