写一个反转链表代码用java
时间: 2023-12-31 13:04:08 浏览: 83
下面是一个反转链表的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 temp = curr.next;
curr.next = prev;
prev = curr;
curr = temp;
}
return prev;
}
```
在这个代码中,我们定义了一个链表节点ListNode,包含了一个整数值val和一个指向下一个节点的指针next。然后我们定义了一个reverseList()方法,用于反转链表。
在方法中,我们使用了三个指针,分别指向当前节点(curr)、前一个节点(prev)和后一个节点(temp)。我们每次将当前节点的指针指向前一个节点,然后依次移动三个指针即可。最后返回反转后的头节点(即原来的尾节点)。
需要注意的是,在反转链表时,一定要先将当前节点的next指针保存到一个临时变量中,否则在修改指针时会造成链表的断裂。
相关问题
用Java 写一个反转链表
可以的,以下是 Java 代码实现反转链表:
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 是链表节点的定义,包含一个 val 属性和一个 next 属性,表示当前节点的值和下一个节点的指针。
写一个链表反转的java代码
以下是反转单向链表的Java代码:
```
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
}
```
以下是反转双向链表的Java代码:
```
class ListNode {
int val;
ListNode prev;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode reverseList(ListNode head) {
ListNode curr = head;
while (curr != null) {
ListNode temp = curr.next;
curr.next = curr.prev;
curr.prev = temp;
if (temp == null) {
return curr;
}
curr = temp;
}
return null;
}
}
```
阅读全文