C#数据结构篇一线性表.docx
- 文档编号:9402137
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:15.66KB
C#数据结构篇一线性表.docx
《C#数据结构篇一线性表.docx》由会员分享,可在线阅读,更多相关《C#数据结构篇一线性表.docx(14页珍藏版)》请在冰豆网上搜索。
C#数据结构篇一线性表
C#数据结构篇
(一)线性表
首先定义结点类型,定义了,前一个指针域,后一个指针域,如下:
usingSystem;
namespaceList
{
///
///SummarydescriptionforListNode.
///
//结点类
publicclassListNode
{
publicListNode(intNewValue)
{
Value=NewValue;
}
///
///前一个
///
publicListNodePrevious;
///
///后一个
///
publicListNodeNext;
///
///值
///
publicintValue;
}
}
usingSystem;
namespaceList
{
///
///链表类
///
定义结点之后,开始类线性表的操作编程了.在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;
Tail=NewNode;
}
Current=NewNode;
//链表数据个数加一
ListCountValue+=1;
}
///
///删除当前的数据
///
publicvoidDelete()
{
//若为空链表
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;
}
}
///
///向后移动一个数据
///
publicvoidMoveNext()
{
if(!
IsEof())Current=Current.Next;
}
///
///向前移动一个数据
///
publicvoidMovePrevious()
{
if(!
IsBof())Current=Current.Previous;
}
///
///移动到第一个数据
///
publicvoidMoveFrist()
{
Current=Head;
}
///
///移动到最后一个数据
///
publicvoidMoveLast()
{
Current=Tail;
}
///
///判断是否为空链表
///
publicboolIsNull()
{
if(ListCountValue==0)
returntrue;
returnfalse;
}
///
///判断是否为到达尾部
///
publicboolIsEof()
{
if(Current==Tail)
returntrue;
returnfalse;
}
///
///判断是否为到达头部
///
publicboolIsBof()
{
if(Current==Head)
returntrue;
returnfalse;
}
publicintGetCurrentValue()
{
returnCurrent.Value;
}
///
///取得链表的数据个数
///
publicintListCount
{
get
{
returnListCountValue;
}
}
///
///清空链表
///
publicvoidClear()
{
MoveFrist();
while(!
IsNull())
{
//若不为空链表,从尾部删除
Delete();
}
}
///
///在当前位置前插入数据
///
publicvoidInsert(intDataValue)
{
ListNodeNewNode=newListNode(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;
}
///
///进行升序插入
///
publicvoidInsertAscending(intInsertValue)
{
//参数:
InsertValue插入的数据
//为空链表
if(IsNull())
{
//添加
Append(InsertValue);
return;
}
//移动到头
MoveFrist();
if((InsertValue { //满足条件,则插入,退出 Insert(InsertValue); return; } while(true) { if(InsertValue { //满族条件,则插入,退出 Insert(InsertValue); break; } if(IsEof()) { //尾部添加 Append(InsertValue); break; } //移动到下一个指针 MoveNext(); } } /// ///进行降序插入 /// publicvoidInsertUnAscending(intInsertValue) { //参数: 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(); } } } } 好了,一个简单的链表类实现了,当然还有许多的功能,可以根据自己的需要添加就好了。 TOBECONTINUE。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 数据结构 线性