请实现链表反转python代码
时间: 2023-10-02 20:14:01 浏览: 46
下面是链表反转的 Python 代码实现:
``` python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
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
```
上述代码中,我们首先定义了一个 `ListNode` 类来表示链表节点。然后定义了一个函数 `reverseList`,其中 `head` 参数表示链表的头节点,函数返回反转后的链表头节点。
我们使用三个指针 `prev`、`curr` 和 `next_node` 来遍历链表。`prev` 指向上一个节点,`curr` 指向当前节点,`next_node` 指向下一个节点。在遍历链表的过程中,我们将 `curr` 的 `next` 指针指向 `prev`,然后将 `prev` 和 `curr` 分别向后移动一位,直到遍历完整个链表。最后返回 `prev`,即为反转后的链表头节点。
相关问题
python递归实现链表反转
以下是Python递归实现链表反转的代码示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
new_head = self.reverseList(head.next)
head.next.next = head
head.next = None
return new_head
```
以上代码中,我们定义了一个`ListNode`类来表示链表节点,`Solution`类中的`reverseList`方法用于反转链表。在方法中,我们首先判断链表是否为空或者只有一个节点,如果是,则直接返回该链表。否则,我们递归调用`reverseList`方法,将当前节点的下一个节点作为参数传入,得到反转后的新链表头节点。然后,我们将当前节点的下一个节点的`next`指针指向当前节点,将当前节点的`next`指针置为`None`,最后返回新链表的头节点。
链表反转 python
链表反转的方法有很多种,以下是一种常见的实现方式:
```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` 属性表示指向下一个节点的指针。
如果你有一个链表示例,并希望对其进行反转,请提供链表的具体细节。