java实现链表逆转(附完整源码)
时间: 2023-11-11 14:04:18 浏览: 86
以下是Java实现链表逆转的示例代码:
```java
public class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
}
public class LinkedListReverse {
public ListNode reverse(ListNode head) {
ListNode prev = null;
while (head != null) {
ListNode next = head.next;
head.next = prev;
prev = head;
head = next;
}
return prev;
}
}
```
上述代码中,`ListNode`表示链表节点,包含一个整数值`val`和指向下一个节点的指针`next`。`LinkedListReverse`类包含一个`reverse`方法,用于将给定链表逆转。
`reverse`方法使用三个指针`prev`、`head`和`next`。首先将`prev`指向空节点,然后循环遍历链表,每次将`head`的下一个节点指针`next`保存下来,然后将`head`的下一个节点指向`prev`,再将`prev`指向`head`,最后将`head`指向之前保存的`next`。当循环结束后,`prev`指向逆转后的链表头节点,返回`prev`即可。
可以使用以下代码来测试链表逆转:
```java
public static void main(String[] args) {
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);
LinkedListReverse solution = new LinkedListReverse();
ListNode reversed = solution.reverse(head);
while (reversed != null) {
System.out.print(reversed.val + " ");
reversed = reversed.next;
}
}
```
此代码将创建一个包含五个节点的链表,然后将链表逆转并输出逆转后的结果。输出结果为`5 4 3 2 1`。
阅读全文