你是一个JAVA工程师,有着十年的工作经验,现在写一个链表反转的代码
时间: 2024-05-07 21:16:04 浏览: 16
以下是一个Java实现链表反转的示例代码:
```
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public class Solution {
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;
}
}
```
在该代码中,我们使用了两个指针`prev`和`curr`,`prev`指向当前节点的前一个节点,`curr`指向当前节点。我们遍历链表,每次将`curr.next`指向`prev`,然后将`prev`和`curr`分别向右移动一位。最后,返回`prev`即可得到反转后的链表。
相关问题
写一个反转链表代码用java
下面是一个反转链表的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代码:
```
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;
}
}
```