链表反转 python
时间: 2023-08-13 11:11:43 浏览: 181
链表反转的方法有很多种,以下是一种常见的实现方式:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverse_linked_list(head):
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
```
你可以将原始链表的头节点传入 `reverse_linked_list` 函数,它将返回反转后的链表的头节点。注意,这里使用了一个 `ListNode` 类来表示链表节点,其中 `val` 属性表示节点的值,`next` 属性表示指向下一个节点的指针。
如果你有一个链表示例,并希望对其进行反转,请提供链表的具体细节。
相关问题
请实现链表反转python代码
以下是链表反转的 Python 代码:
```python
class Node:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head: Node) -> Node:
prev = None
curr = head
while curr:
temp = curr.next
curr.next = prev
prev = curr
curr = temp
return prev
```
这段代码定义了一个 `Node` 类和一个 `reverseList` 函数。`Node` 类表示链表中的一个节点,包含一个值 `val` 和一个指向下一个节点的指针 `next`。`reverseList` 函数接收一个链表的头节点 `head`,并返回反转后的链表的头节点。具体实现使用了三个指针 `prev`、`curr` 和 `temp`,分别表示上一个节点、当前节点和下一个节点。每次循环中,将当前节点的指针指向上一个节点,然后将三个指针向后移动一位,直到遍历完整个链表。最后返回上一个节点 `prev`,即为反转后的链表的头节点。
python链表反转
Python链表反转可以使用循环迭代和递归两种方式实现。其中循环迭代需要三个临时变量:pre、head、next,临界条件是链表为None或者链表就只有一个节点。具体实现可以参考以下代码:
```
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
new_head = None
while head:
per = head.next
head.next = new_head
new_head = head
head = per
return new_head
```
这段代码中,我们新建了一个头指针new_head,然后遍历head链表,依次在新的头节点位置插入,达到反转的效果。最后返回一个新的链表。
阅读全文