• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#链表

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

C#中实现链表,写出来练习下。

首先实现链表中的节点:

  class LinkListNode
{
object value;//节点中存放的数据

public object Value
{
get { return this.value; }
set { this.value = value; }
}
public LinkListNode(object value)
{
this.value = value;
}
LinkListNode nodeNext;//下一个节点

internal LinkListNode NodeNext
{
get { return nodeNext; }
set { nodeNext = value; }
}
LinkListNode nodePrev;//上一个

internal LinkListNode NodePrev
{
get { return nodePrev; }
set { nodePrev = value; }
}
}

实现链表

    class LinkList:IEnumerable
{
LinkListNode frist;

internal LinkListNode Frist
{
get { return frist; }
set { frist = value; }
}
LinkListNode last;

internal LinkListNode Last
{
get { return last; }
set { last = value; }
}

public LinkListNode AddNode(object node)
{
LinkListNode newNode = new LinkListNode(node);
//如果链表中没有节点,则把新添加的节点标记为链表的第一个元素
//然后把新增加的节点的指向下一个的属性设为链表中的最后一个元素的标记
//然后让最后一个和第一个的指向同一个位置
if (frist == null)
{
frist = newNode;
newNode.NodePrev = last;
last = frist;
}
//如果是链表中有元素,首先把最后一个元素给中间变量TMP
//然后把最后一个元素的下一个指向新添加的元素
//接着把链表中最后一个得标记指向新添加的元素
//最后把新添加的元素的上一个元素指定为中间变量TMP
else
{
LinkListNode tmp = last;
last.NodeNext = newNode;
last = newNode;
newNode.NodePrev = tmp;
}
return newNode;
}

public IEnumerator GetEnumerator()
{
LinkListNode cou = frist;
while (cou != null)
{
yield return cou.Value;
cou = cou.NodeNext;
}
}
}

Main方法中来实验下

 static void Main(string[] args)
{
LinkList list = new LinkList();
list.AddNode(1);
list.AddNode(2);
list.AddNode(3);
list.AddNode(4);
foreach (var i in list)
{
Console.WriteLine(i.ToString());
}
}




 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#Split實例发布时间:2022-07-10
下一篇:
跟我学做c#皮肤美化(一)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap