Before:
+----+----+
list-->| 1 | / |
+----+----+
+----+----+ +----+----+ +----+----+
list2-> | 2 | +----> | 3 | +----> | 4 | / |
+----+----+ +----+----+ +----+----+
After:
+----+----+ +----+----+ +----+----+
list 1---->| 4 | +----> | 1 | +----> | 2 | / |
+----+----+ +----+----+ +----+----+
+----+----+
List2---->| 3 | / |
+----+----+
这就是我所拥有的:
list.next = list2.next.next // 4 -> 1
list = list2 // 4 -> 1 -> 4 -> 2 -> 3 -> 4
list2 = list.next.next.next.next // 3
list.next.next.next.next = null // 4 -> 1 -> 4 -> 2
我不知道这是否正确?我很难弄清楚的问题
Hi@BethGirly1欢迎来到StackOverflow。我想你是在问如何在Java中反转链表。
你可以将链表中的所有元素从列表中弹出,并将它们推到堆栈中,然后再次弹出(只有当你知道列表只会很小时,这才是好的(。
否则,您可以使用三个变量迭代(单独(链表。一个保持上一个Node值,一个保持当前值,一一个保持下一个值,然后用前一个Node切换到Node中的下一个数值。
我的Java有点生疏(可能是意外地将其标记为Node.js(。
// pass in the first node in the LinkedList, normally a LinkedList class knows the head.
public void reverse(Node head) {
Node previous = null;
Node current = head;
Node nextNode = null;
while (current.next != null) {
nextNode = current.next;
current.next = previous;
previous = current;
current = nextNode;
}
}