C#泛型学习详解-创建线性链表
什么是泛型
在C#中,泛型是一种基于类型参数化的编程技术,它允许我们编写一个可以与任何类型一起工作的代码。使用泛型代码可以提高代码重用性和类型安全性。
什么是线性链表
线性链表是一种基本数据结构,由若干个数据节点构成,每个节点包含自己的数据或指向其他节点的引用。节点之间的关系是通过引用来体现的。具体的,我们可以用下列代码来表示:
class Node<T>
{
public T Data { get; set; }
public Node<T> Next { get; set; }
public Node(T t)
{
Data = t;
Next = null;
}
}
上述代码表示一个包含数据和后继节点引用的节点类,T表示我们将要使用的数据类型。
创建泛型线性链表
在C#中,我们可以使用泛型去创建一个线性链表。
线性链表类定义
首先,我们需要定义一个泛型类来表示线性链表,这个类需要包含一些基本操作,例如增加、插入、删除等。
public class GenericList<T>
{
private Node<T> head;
private Node<T> tail;
public GenericList()
{
tail = head = null;
}
public Node<T> Head
{
get => head;
}
public void Add(T t)
{
Node<T> n = new Node<T>(t);
if (tail == null)
head = tail = n;
else
{
tail.Next = n;
tail = n;
}
}
public void ForEach(Action<T> action)
{
for (Node<T> x = head; x != null; x = x.Next)
action(x.Data);
}
}
上述代码表示一个泛型类GenericList,其中包含一个节点头head和节点尾tail,同时还定义了增加节点、遍历整个链表的函数等方法。其中Action是一个泛型委托,表示接受一种特定类型的方法。
示例一-添加整型数据
我们可以使用以下代码,来创建一个存储整型数据的泛型线性链表,并添加一些元素。
GenericList<int> ll = new GenericList<int>();
for (int i = 0; i < 10; i++)
{
ll.Add(i);
}
ll.ForEach(i => Console.Write(i));
这段代码中,我们创建了一个存储整型数据的泛型线性链表,然后添加了一些元素。最后,我们使用ForEach遍历链表,并输出链表中的元素。
示例二-添加字符串
同样的,我们可以用以下代码来创建一个泛型线性链表,并添加一些字符串。
GenericList<string> ll = new GenericList<string>();
ll.Add("Penn");
ll.Add("Teller");
ll.ForEach(s => Console.WriteLine(s));
这段代码中,我们创建了一个存储字符串的泛型线性链表,并添加了两个元素。最后,我们使用ForEach遍历链表,并输出链表中的元素。
总结
本文讲解了C#泛型的相关知识,并使用泛型去创建了线性链表。通过示例代码的演示,加深了对泛型的理解。泛型在C#中有着非常广泛的应用场景,它可以大大提高代码的复用性和类型安全性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#泛型学习详解 创建线性链表 - Python技术站