python反转单链表
时间: 2023-11-17 18:00:44 浏览: 104
```python
# 定义链表节点
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
# 定义前驱节点和当前节点
pre = None
cur = head
while cur:
# 保存当前节点的下一个节点
tmp = cur.next
# 反转当前节点
cur.next = pre
# 更新前驱节点和当前节点
pre = cur
cur = tmp
# 返回反转后的头节点
return pre
```
相关问题
python实现单链表的反转
可以通过遍历单链表,依次将每个节点的指针反转实现单链表的反转。
具体实现步骤如下:
1. 定义一个新的节点 `prev`,初始化为 `None`,表示反转后的链表的头节点。
2. 从头节点开始遍历单链表,依次将每个节点的 `next` 指针指向其前一个节点。
3. 实现反转后的链表的头节点指向原链表的尾节点,将 `prev` 返回即可。
以下是 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
```
其中,`ListNode` 表示链表节点,`reverseList` 是反转单链表的函数。函数的输入参数 `head` 是链表的头节点,返回反转后的链表头节点。
函数中使用了三个变量:`prev` 表示反转后的链表的头节点,初始化为 `None`;`curr` 表示当前遍历的节点;`next_node` 表示当前节点的下一个节点。
在遍历单链表时,依次将每个节点的 `next` 指针指向其前一个节点,并更新 `prev` 和 `curr` 的值。
最后,将反转后的链表的头节点指向原链表的尾节点,将 `prev` 返回即可。
用Python写单链表的建立、遍历和反转
单链表是一种常见的数据结构,它由一个节点序列组成,每个节点包含一个元素和一个指向下一个节点的指针。下面是Python中单链表的建立、遍历和反转的示例代码:
```python
# 定义单链表节点类
class ListNode:
def __init__(self, value):
self.val = value
self.next = None
# 建立单链表
def createLinkedList(arr):
if not arr:
return None
head = ListNode(arr[0])
cur = head
for i in range(1, len(arr)):
node = ListNode(arr[i])
cur.next = node
cur = cur.next
return head
# 遍历单链表
def printLinkedList(head):
cur = head
while cur:
print(cur.val, end=" ")
cur = cur.next
# 反转单链表
def reverseLinkedList(head):
pre = None
cur = head
while cur:
temp = cur.next
cur.next = pre
pre = cur
cur = temp
return pre
```
示例:
```python
# 建立单链表
arr = [1, 2, 3, 4, 5]
head = createLinkedList(arr)
# 遍历单链表
printLinkedList(head)
# 输出:1 2 3 4 5
# 反转单链表
newHead = reverseLinkedList(head)
printLinkedList(newHead)
# 输出:5 4 3 2 1
```
阅读全文