C#链表
IEnumerable是可枚举的所有非泛型集合的基接口, IEnumerable包含一个方法GetEnumerator(),该方法返回一个IEnumerator;
GetEnumerator()方法使用yield语句创建一个枚举器类型。
- 创建LinkedListNode类
public class LinkedListNode
{
public LinkedListNode(object value)
{
this.Value = value;
}
public object Value { get; private set; }
public LinkedListNode Next { get; internal set; }
public LinkedListNode Prev { get; internal set; }
}
- 创建LinkedList类
public class LinkedList: IEnumerable
{
public LinkedListNode First { get; private set; }
public LinkedListNode Last { get; private set; }
public LinkedListNode AddLast(object node)
{
var newNode =new LinkedListNode(node);
if (First==null)
{
First = newNode;
Last = First;
}
else
{
LinkedListNode previous = Last;
Last.Next = newNode;
Last = newNode;
Last.Prev = previous;
}
return newNode;
}
public IEnumerator GetEnumerator()
{
LinkedListNode current = First;
while (current!=null)
{
yield return current.Value;
current = current.Next;
}
}
}
- 调用
static void Main(string[] args)
{
LinkedList linkedList = new LinkedList();
linkedList.AddLast("张三");
linkedList.AddLast("李四");
linkedList.AddLast("赵四");
foreach (string i in linkedList)
{
Console.WriteLine(i);
}
}