c# 自定义泛型链表类的详解

时间:2021-05-20

(1)自定义泛型链表类。
复制代码 代码如下:
public class GenericList<T>
{
private class Node
{
//当前节点值
private T data;
public T Data
{
get { return data; }
set { data = value; }
}
//节点的下一个节点
private Node next;
public Node Next
{
get { return next; }
set { next = value; }
}
//节点的上一个节点
private Node last;
public Node Last
{
get { return last; }
set { last = value; }
}
public Node(T t)
{
data = t;
next = null;
}
}
private Node firstNode;
private Node lastNode;
public void AddNode(T t)
{
Node node = new Node(t);
node.Last = lastNode;
if (lastNode != null)
lastNode.Next = node;
lastNode = node;
if (firstNode == null)
{
firstNode = node;
}
}
//要在自定义泛型集合上迭代
//必须实现该接口
public IEnumerator<T> GetEnumerator()
{
Node current = firstNode;
while (current != null)
{
//yield return表达式以枚举对象返回
yield return current.Data;
current = current.Next;
}
}
}

(2)自定义泛型链表类调用。
复制代码 代码如下:
class GenericListTestTwo
{
static void Main()
{
// 类型参数为int
GenericList<int> list = new GenericList<int>();
for (int a = 0; a < 5; a++)
{
list.AddNode(a);
}
foreach (int i in list)
{
System.Console.WriteLine(i);
}
//类型参数为string
GenericList<string> strList = new GenericList<string>();
strList.AddNode("First Node");
strList.AddNode("Second Node");
foreach(string s in strList)
{
System.Console.WriteLine(s);
}
Console.Read();
}
}

输出如下:

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章