双向链表-LinkedListUtil
# 简介
静态工具类 LinkedListUtil,封装了常用双向链表操作方法的工具类。它包含了对双向链表进行添加、插入、移动、删除、查找和清空等操作的方法,可以方便地操作双向链表。
# EasyTool.LinkedListUtil 类
方法说明:
AddLast
: 将指定元素添加到双向链表的结尾处。AddFirst
: 将指定元素添加到双向链表的开头处。AddBefore
: 将指定元素插入到双向链表中的指定位置之前。AddAfter
: 将指定元素插入到双向链表中的指定位置之后。MoveLast
: 将双向链表中的某个节点移动到链表的结尾处。MoveFirst
: 将双向链表中的某个节点移动到链表的开头处。Remove
: 从双向链表中移除指定节点。Remove(T)
: 从双向链表中移除指定值的第一个匹配项。Contains
: 确定双向链表中是否包含特定值。Clear
: 从双向链表中移除所有节点。
# AddLast-将指定元素添加到双向链表的结尾处
/// <summary>
/// 将指定元素添加到双向链表的结尾处
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="item">要添加的元素</param>
public static void AddLast<T>(LinkedList<T> list, T item)
# AddFirst-将指定元素添加到双向链表的开头处
/// <summary>
/// 将指定元素添加到双向链表的开头处
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="item">要添加的元素</param>
public static void AddFirst<T>(LinkedList<T> list, T item)
# AddBefore-将指定元素插入到双向链表中的指定位置之前
/// <summary>
/// 将指定元素插入到双向链表中的指定位置之前
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="node">要在其前面插入新元素的节点</param>
/// <param name="item">要添加的元素</param>
/// <returns>新节点</returns>
public static LinkedListNode<T> AddBefore<T>(LinkedList<T> list, LinkedListNode<T> node, T item)
# AddAfter-将指定元素插入到双向链表中的指定位置之后
/// <summary>
/// 将指定元素插入到双向链表中的指定位置之后
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="node">要在其后面插入新元素的节点</param>
/// <param name="item">要添加的元素</param>
/// <returns>新节点</returns>
public static LinkedListNode<T> AddAfter<T>(LinkedList<T> list, LinkedListNode<T> node, T item)
# MoveLast-将双向链表中的某个节点移动到链表的结尾处
/// <summary>
/// 将双向链表中的某个节点移动到链表的结尾处
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="node">要移动的节点</param>
public static void MoveLast<T>(LinkedList<T> list, LinkedListNode<T> node)
# MoveFirst-将双向链表中移动到最前方
/// <summary>
/// 将双向链表中移动到最前方
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="node">要移动的节点</param>
public static void MoveFirst<T>(LinkedList<T> list, LinkedListNode<T> node)
# Remove-从双向链表中移除指定节点
/// <summary>
/// 从双向链表中移除指定节点
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="node">要移除的节点</param>
public static void Remove<T>(LinkedList<T> list, LinkedListNode<T> node)
# Remove-从双向链表中移除指定值的第一个匹配项
/// <summary>
/// 从双向链表中移除指定值的第一个匹配项
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="item">要移除的元素</param>
/// <returns>如果成功移除了元素,则为 true;否则为 false。</returns>
public static bool Remove<T>(LinkedList<T> list, T item)
# Contains-确定双向链表中是否包含特定值
/// <summary>
/// 确定双向链表中是否包含特定值
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
/// <param name="item">要在双向链表中查找的元素</param>
/// <returns>如果在双向链表中找到了 item,则为 true;否则为 false。</returns>
public static bool Contains<T>(LinkedList<T> list, T item)
# Clear-从双向链表中移除所有节点
/// <summary>
/// 从双向链表中移除所有节点
/// </summary>
/// <typeparam name="T">双向链表元素类型</typeparam>
/// <param name="list">双向链表</param>
public static void Clear<T>(LinkedList<T> list)
# 代码示例
using System;
using System.Collections.Generic;
using LinkedListUtil;
class Program
{
static void Main(string[] args)
{
LinkedList<int> list = new LinkedList<int>();
LinkedListNode<int> node1 = LinkedListUtil.AddLast(list, 1);
LinkedListNode<int> node2 = LinkedListUtil.AddLast(list, 2);
LinkedListNode<int> node3 = LinkedListUtil.AddLast(list, 3);
LinkedListNode<int> newNode = LinkedListUtil.AddBefore(list, node2, 4);
LinkedListUtil.MoveLast(list, node1);
LinkedListUtil.Remove(list, node3);
Console.WriteLine($"The list contains 2: {LinkedListUtil.Contains(list, 2)}");
LinkedListUtil.Clear(list);
}
}
# 输出结果
The list contains 2: True
上次更新: 2023/04/26, 22:10:06