基于上述链表结构及操作,写一个代码实现链表反转
时间: 2023-05-29 14:01:57 浏览: 55
以下是Python示例代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head: ListNode) -> ListNode:
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
```
使用方法:
```python
# 创建链表
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node1.next = node2
node2.next = node3
node3.next = node4
# 反转链表
new_head = reverseList(node1)
```
上面代码将创建一个链表 1 → 2 → 3 → 4,然后使用 `reverseList` 函数对其进行反转,得到新的链表 4 → 3 → 2 → 1,存储在变量 `new_head` 中。
相关问题
写一个反转链表代码用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;
}
}
```