有必要实施一个循环清单。通过扩展方法制作。但有一个警告。如何实现从节点中第一个值的方法返回?在这种情况下,第二个值(“Tanya”)总是在第一次传递期间返回给我,然后在最后一个节点之后,转换到第一个值。
class Program
{
static void Main(string[] args)
{
// Создадим связный список
LinkedList<string> linkedList = new LinkedList<string>();
// Добавим несколько элементов
linkedList.AddFirst("Вася");
linkedList.AddFirst("Петя");
linkedList.AddFirst("Таня");
linkedList.AddFirst("Коля");
// Отобразим элементы в прямом направлении
LinkedListNode<string> node;
Console.WriteLine("Элементы коллекции в прямом направлении: ");
for (node = linkedList.First; node != null; node = node.Next)
Console.Write(node.Value + "\t");
Console.WriteLine();
var result = GetValue(linkedList.First);
Console.WriteLine($"+++++++ {result} ++++++++");
Console.ReadKey();
}
private static string GetValue(LinkedListNode<string> node)
{
node = CircularLinkedList.NextOrFirst(node);
return node.Value;
}
}
单链表的扩展方法:
public static class CircularLinkedList
{
public static LinkedListNode<T> NextOrFirst<T>(this LinkedListNode<T> current)
{
return current.Next ?? current.List.First;
}
public static LinkedListNode<T> PreviousOrLast<T>(this LinkedListNode<T> current)
{
return current.Previous ?? current.List.Last;
}
}
该方法的
GetValue
名称错误:也许您想要执行以下操作:
因为在这段代码中
首先获取下一个元素,然后才取值,当第一个元素通过时,将从下一个元素接收值。
要解决,不传递第一个元素,而是传递最后一个元素就足够了: