您的位置:首页 > 理论基础 > 数据结构算法

数据结构中链表的C#实现部分示例

2016-09-21 17:34 225 查看
本文是将数据结构中常用的链表实现(C#语言)的个人课堂示例展现了一下,旨在为初学者以参考。其中大部分代码做了注释,请大家批评指正!
</pre><pre class="csharp" name="code">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//本命名空间LinkList与工程名一致,为自动生成
namespace LinkList
{
//下面即为链表LinkList的定义
class LinkList
{
//属性或字段部分
public int Length; //Length用来记录链表的长度
private Node Head; //Head是链表的头结点,不存数据
public LinkList() //链表的构造方法,结果会构建一个空链表
{
Length = 0; //链表初始长度为0
Head = new Node(); //实例化头结点Head
}
//下面为获取链表的数据元素的方法
public object GetElem(int i)
{
object e=null; //定义一个object用来返回数据元素
if (i > 0 && i <= Length)
{
Node p = Head; //定义一个结点变量p,并定位于头结点Head
for (int j = 0; j < i; j++) //利用循环标识j,控制循环使p定位于第i个结点
{
p = p.Next;
}
e = p.Data; //将选定结点的数据部分赋值给e
}
return e; //返回e的值
}
//以下为链表插入结点的方法
public bool Insert(int i, object e)
{
Node p = Head; //定义一个结点变量p,并定位于头结点Head
int j = 0; //定义整型变量j,辅助p定位到i所指结点的前驱结点
while (p != null && j < i - 1) //当p尚未移动到尾结点之后的位置(null)时,并且j仍在i的前面
{
p = p.Next; //p后移一个结点
j++; //j向后移动一位
}
if (p == null || j > i - 1) //若p移动到尾结点之后的位置(null)或j不在i的前面,返回“失败”,结束方法
return false;
Node s = new Node(); //定义结点变量s并实例化
s.Data = e; //将e赋值给s的数据域
s.Next = p.Next; //s.Next指向p.Next
p.Next = s; //p.Next指向s,完成插入结点s
Length++; //链表长度加一
return true; //返回“成功”,结束
}
//下面为输出链表的方法,结果以字符串的形式返回
public string Print()
{
string s=""; //定义空串s
Node p = Head.Next; //定义结点变量p定位于Head
while (p != null) //在p未到尾结点之后的位置时进行循环
{
s+=p.Data.ToString(); //将当前结点的Data转为string累加连接到s
if (p.Next != null) //若p不是尾结点,则之间加入“,”分隔符
s += ",";
p = p.Next; //p后移一位
}
return s;
}
//==============================================================
//此处可添加其他的方法,比如Empty(),Delete(int i)等
//==============================================================
//下面是嵌套在LinkList中的结点(Node)类
private class Node
{
public object Data; //数据域
public LinkList.Node Next; //链接域
//构造方法1,用于无数据域的结点实例化
public Node()
{
Next = null; //新的结点链接域为null
}
//构造方法2,用于给数据域直接赋值的结点实例化
public Node(object value)
{
Data = value; //给新结点数据域赋值
Next = null; //新结点链接域为null
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 链表 c#