使用泛型实现简单链表
首先创建一个泛型类LinkedListNode,该类型包含了一个属性Value,可以通过初始化进行赋值。还包含对上一个元素和下一个元素的引用。
public class LinkedListNode<T>
{
public LinkedListNode(T value)
{
this.value = value;
}
public T value { get; private set; }
public LinkedListNode<T> Next { get; internal set; }
public LinkedListNode<T> Prev { get; internal set; }
}
然后创建一个LinkedList类型,该类包含了对链表首尾元素的引用。还包含一个添加元素到尾部的方法,以及GetEnumrator()方法,以便通过foreach进行遍历元素。
public class LinkedList<T> : IEnumerable<T>
{
public LinkedListNode<T> First { get; private set; }
public LinkedListNode<T> Last { get; private set; }
public LinkedListNode<T> AddLast(T node)
{
var newNode = new LinkedListNode<T>(node);
if (First == null)
{
First = newNode;
Last = First;
}
else
{
LinkedListNode<T> previous = Last;
Last.Next = newNode;
Last = newNode;
Last.Prev = previous;
}
return newNode;
}
public IEnumerator<T> GetEnumerator()
{
LinkedListNode<T> current = First;
while (current != null)
{
yield return current.value;
current = current.Next;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
现在就可以对任意数据类型使用这个简易链表进行操作了。
static void Main(string[] args)
{
LinkedList<int> arr = new LinkedList<int>();
arr.AddLast(0);
arr.AddLast(1);
arr.AddLast(2);
foreach (var item in arr)
{
Console.WriteLine(item);
}
LinkedList<string> sArr = new LinkedList<string>();
sArr.AddLast("hello 1");
sArr.AddLast("hello 2");
sArr.AddLast("hello 3");
foreach (var item in sArr)
{
Console.WriteLine(item);
}
Console.ReadKey();
}

来源:https://www.cnblogs.com/andonglu/p/11076655.html