C#使用泛型方法设计实现单向链表详解
以下是一个使用泛型节点类和LinkedList<T>类的示例,其中包含Insert方法用于插入新节点,并在插入后更新当前节点。同时,GetCurrentValue方法用于获取当前节点的值,并将其转换为int类型。
1.先设计一个泛型节点类Node<T>
/// <summary>
/// 定义泛型节点类
/// </summary>
public class Node<T>(T data)
{
public T Data { get; set; } = data;
public Node<T>? Next { get; set; } = null;
}
2.在设计一个泛型链表类LinkedList<T>
定义一个包含Insert和GetCurrentValue方法的LinkedList<T>类:
/// <summary>
/// 定义泛型链表类LinkedList<T>
/// </summary>
public class LinkedList<T> where T : struct
{
private Node<T>? head;
private Node<T>? current;
public void Insert(T value)
{
var newNode = new Node<T>(value);
if (head == null)
{
head = newNode;
current = newNode;
}
else
{
Node<T> temp = head;
while (temp.Next != null)
{
temp = temp.Next;
}
temp.Next = newNode;
current = newNode;
}
}
// 定义GetCurrentValue()方法,获取当前节点
public int GetCurrentValue()
{
if (head == null)
{
throw new InvalidOperationException("The linked list is empty.");
}
return LinkedList<T>.ConvertToInt(head.Data);
}
// 把<T>转换为int类型
private static int ConvertToInt(T value)
{
return checked((int)(object)value);
}
}
使用类似的方法在LinkedList<T>类中添加其他方法。
3.创建一个LinkedList<int>类的实例
创建一个LinkedList<int>类的实例,插入一些节点,并显示当前节点的值:
var linkedList = new LinkedList<int>(); linkedList.Insert(5); linkedList.Insert(10); linkedList.Insert(15); Console.WriteLine(linkedList.GetCurrentValue()); // 输出:15
这个示例假设类型T可以转换为int。在实际应用中,请确保T的类型符合您的需求。
到此这篇关于C#使用泛型方法设计实现单向链表详解的文章就介绍到这了,更多相关C#泛型实现单向链表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
C#多接口实现、重名成员、显式实现、接口继承+抽象类和接口区别说明
这段SEO描述融合了“接口显式实现”、“接口冲突”、“接口继承”三个核心关键词,详细概括了文章关于Java接口相关知识点的讲解,包括显式实现规则、冲突接口处理方法、接口继承规则等内容,适合准备相关考试或项目开发的读者2026-06-06
C#中LINQ to DataSet操作及DataTable与LINQ相互转换
这篇文章介绍了C#中LINQ to DataSet操作及DataTable与LINQ相互转换,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-05-05


最新评论