C#数据结构篇一线性表Word下载.docx
《C#数据结构篇一线性表Word下载.docx》由会员分享,可在线阅读,更多相关《C#数据结构篇一线性表Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
publicListNode(intNewValue)
Value=NewValue;
}
///前一个
publicListNodePrevious;
///后一个
publicListNodeNext;
///值
publicintValue;
}
///链表类
定义结点之后,开始类线性表的操作编程了.在LIST类中,采用了,Head,Tail,Current,三个指针,使用Append,MoveFrist,MovePrevious,MoveNext,MoveLast,Delete,InsertAscending,InsertUnAscending,Clear实现移动,添加,删除,升序插入,降序插入,清空链表操作,GetCurrentValue()方法取得当前的值。
publicclassClist
publicClist()
{
//构造函数
//初始化
ListCountValue=0;
Head=null;
Tail=null;
///头指针
privateListNodeHead;
///尾指针
privateListNodeTail;
///当前指针
privateListNodeCurrent;
///链表数据的个数
privateintListCountValue;
///尾部添加数据
publicvoidAppend(intDataValue)
ListNodeNewNode=newListNode(DataValue);
if(IsNull())
//如果头指针为空
Head=NewNode;
Tail=NewNode;
else
Tail.Next=NewNode;
NewNode.Previous=Tail;
Current=NewNode;
//链表数据个数加一
ListCountValue+=1;
///删除当前的数据
publicvoidDelete()
//若为空链表
if(!
IsNull())
//若删除头
if(IsBof())
Head=Current.Next;
Current=Head;
ListCountValue-=1;
return;
//若删除尾
if(IsEof())
Tail=Current.Previous;
Current=Tail;
//若删除中间数据
Current.Previous.Next=Current.Next;
Current=Current.Previous;
///向后移动一个数据
publicvoidMoveNext()
if(!
IsEof())Current=Current.Next;
///向前移动一个数据
publicvoidMovePrevious()
IsBof())Current=Current.Previous;
///移动到第一个数据
publicvoidMoveFrist()
///移动到最后一个数据
publicvoidMoveLast()
///判断是否为空链表
publicboolIsNull()
if(ListCountValue==0)
returntrue;
returnfalse;
///判断是否为到达尾部
publicboolIsEof()
if(Current==Tail)
///判断是否为到达头部
publicboolIsBof()
if(Current==Head)
publicintGetCurrentValue()
returnCurrent.Value;
///取得链表的数据个数
publicintListCount
get
returnListCountValue;
///清空链表
publicvoidClear()
MoveFrist();
while(!
IsNull())
//若不为空链表,从尾部删除
Delete();
///在当前位置前插入数据
publicvoidInsert(intDataValue)
ListNodeNewNode=newListNode(DataValue);
if(IsNull())
//为空表,则添加
Append(DataValue);
//为头部插入
NewNode.Next=Head;
Head.Previous=NewNode;
//中间插入
NewNode.Next=Current;
NewNode.Previous=Current.Previous;
Current.Previous.Next=NewNode;
Current.Previous=NewNode;
///进行升序插入
publicvoidInsertAscending(intInsertValue)
//参数:
InsertValue插入的数据
//为空链表
if(IsNull())
//添加
Append(InsertValue);
//移动到头
if((InsertValue<
GetCurrentValue()))
//满足条件,则插入,退出
Insert(InsertValue);
while(true)
if(InsertValue<
GetCurrentValue())
//满族条件,则插入,退出
break;
//尾部添加
//移动到下一个指针
MoveNext();
///进行降序插入
publicvoidInsertUnAscending(intInsertValue)
if(InsertValue>
好了,一个简单的链表类实现了,当然还有许多的功能,可以根据自己的需要添加就好了。
TOBECONTINUE。