您的位置:首页 > 编程语言 > C#

c#自定义简单链表通过IEnumerable接口实现内部迭代

2010-06-04 17:25 495 查看
/// <summary>
/// LinkedListNode 自定义简单链表的节点定义
/// </summary>
public class LinkedListNode
{
//当前节点值
private object _value;
public object Value
{
get { return _value; }
}

//构造函数
public LinkedListNode(object value)
{
this._value = value;
}

//下一个节点
private LinkedListNode _next;
public LinkedListNode Next
{
get { return _next; }
internal set { _next = value; }
}

//当前节点
private LinkedListNode _prev;
public LinkedListNode Prev
{
get { return _prev; }
internal set { _prev = value; }
}
}

using System.Collections;
using System;

/// <summary>
/// LinkedList 自定义简单链表
/// 为使自定义简单链表实现内部迭代,使之实现IEnumerable接口
/// </summary>
public class LinkedList:IEnumerable
{
//首节点
private LinkedListNode _first;
public LinkedListNode First
{
get { return _first; }
}

//尾节点
private LinkedListNode _last;
public LinkedListNode Last
{
get { return _last; }
}

//添加新节点
public void AddLast(object node)
{
LinkedListNode newNode = new LinkedListNode(node);

if (_first == null)
{
_first = newNode;
_last = _first;
}
else
{
_last.Next = newNode;
_last = newNode;
}
}

//定义IEnumerable接口中的GetEnumerator方法
public IEnumerator GetEnumerator()
{
LinkedListNode current = _first;

while (current != null)
{
yield return current.Value;
current = current.Next;

//if (Convert.ToInt32(current.Value) == 1)
//{
//    yield break;     //停止迭代
//}
//else
//{
//    yield return current.Value;    //返回集合的一个元素
//    current = current.Next;
//}
}
}
}

/* 调用^-^ */
LinkedList list1 = new LinkedList();
list1.AddLast(0);
list1.AddLast(1);

foreach(int i in list1)
{
Response.Write(i.ToString());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐