Java代码实现反转链表
时间: 2024-02-23 09:23:02 浏览: 24
以下是Java代码实现反转链表的示例:
```java
private static Node reverseLinkedList(Node head) {
Node prev = null;
Node current = head;
Node next = null;
while (current != null) {
next = current.next;
current.next = prev;
prev = current;
current = next;
}
return prev;
}
```
这段代码中,我们使用了三个指针prev、current和next来完成链表的反转操作。prev指向当前节点的前一个节点,current指向当前节点,next指向当前节点的下一个节点。在每一次循环中,我们将current的next指针指向prev,然后更新prev、current和next的指向,直到遍历完整个链表。最后,返回反转后的链表的头节点。
你可以使用这个方法来反转一个链表,并通过遍历链表的方法验证反转的准确性。例如,你可以使用上面提到的showLink方法来打印反转后的链表。
希望这个示例能够帮助到你!
相关问题
用Java代码实现反转链表,给你单链表的头节点head,请你反转链表,并返回反转后的链表,head=[1,2,3,4,5],并返回结果
好的,以下是Java代码实现反转链表的方法:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode nextTemp = curr.next;
curr.next = prev;
prev = curr;
curr = nextTemp;
}
return prev;
}
```
我们首先定义一个 `ListNode` 类,表示单链表的节点,包含一个整数值和指向下一个节点的指针。然后定义 `reverseList` 方法,接收单链表的头节点作为参数,返回反转后的链表的头节点。
在 `reverseList` 方法中,我们使用三个指针来实现链表的反转。`prev` 指向当前节点的前一个节点,`curr` 指向当前节点,`nextTemp` 指向当前节点的下一个节点。我们不断遍历链表,将当前节点的 `next` 指针指向前一个节点,然后将三个指针都向后移动一个节点。最后返回反转后的链表的头节点 `prev`。
对于给定的单链表 `[1,2,3,4,5]`,我们可以按照以下方式调用 `reverseList` 方法来反转链表:
```java
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);
ListNode newHead = reverseList(head);
System.out.println(newHead.val); // 输出 5
System.out.println(newHead.next.val); // 输出 4
System.out.println(newHead.next.next.val); // 输出 3
System.out.println(newHead.next.next.next.val); // 输出 2
System.out.println(newHead.next.next.next.next.val); // 输出 1
```
输出结果为:
```
5
4
3
2
1
```
可以看到,我们成功地将单链表反转了。
使用Java实现反转链表源码
可以使用以下Java代码实现反转链表: public class ReverseLinkedList {
static class Node {
int val;
Node next;
Node(int val) {
this.val = val;
}
}
public static Node reverseLinkedList(Node head) {
Node prev = null;
Node current = head;
while(current != null) {
Node next = current.next;
current.next = prev;
prev = current;
current = next;
}
return prev;
}
}