两个方式:一种是对折 互换值,一种是一个一个取出来给新的链表赋值,再引用切换
public void ReverseLinkedList1<T>(LinkedList<T> linkedList) { LinkedListNode<T> firstNode; LinkedListNode<T> secondNode; int numberOfRun; LinkedListNode<T> tail = linkedList.First; while (tail.Next != null) tail = tail.Next; firstNode = linkedList.First; secondNode = tail; numberOfRun = linkedList.Count / 2; T tempObject; for (int i = 0; i < numberOfRun; i++) { tempObject = firstNode.Value; firstNode.Value = secondNode.Value; secondNode.Value = tempObject; firstNode = firstNode.Next; secondNode = secondNode.Previous; } } public void ReverseLinkedList2<T>(LinkedList<T> linkedList) { LinkedList<T> copyList = new LinkedList<T>(); LinkedListNode<T> start = linkedList.First; while (start != null) { copyList.AddFirst(start.Value); start = start.Next; } linkedList = copyList; }
原文:https://www.cnblogs.com/TeemoHQ/p/10911368.html