编写函数,实现单链表的逆置
时间: 2024-10-01 14:09:54 浏览: 34
编写函数来实现单链表的逆置通常涉及到迭代或递归的方法。这里提供一个使用迭代的Python示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverse_list(head):
prev = None
current = head
while current is not None:
# 将当前节点的next指向前一个节点
temp = current.next
current.next = prev
# 更新前一个和当前节点
prev = current
current = temp
return prev # 返回新的头节点,即原链表的尾节点
```
在这个函数中,我们通过遍历链表并交换每个节点的`next`指针,逐步实现了链表的逆置。最后返回的新头节点就是原来的尾节点。
相关问题
数据结构:编写函数实现单链表逆置
数据结构是计算机中用来组织和存储数据的方式。单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。
要实现单链表的逆置,可以编写一个函数来完成。以下是一个示例代码:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
def reverse_linked_list(head):
if head is None or head.next is None:
return head
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
```
在这个示例中,我们定义了一个`Node`类来表示链表的节点。`reverse_linked_list`函数接受链表的头节点作为参数,并返回逆置后的链表的头节点。
函数中使用了三个指针`prev`、`curr`和`next_node`来进行逆置操作。首先,将`prev`初始化为`None`,`curr`初始化为头节点。然后,通过循环遍历链表,将当前节点的指针指向前一个节点,然后更新`prev`和`curr`指针,继续遍历下一个节点。最后返回逆置后的链表的头节点。
示例数据结构:编写函数实现单链表逆置代码
在编程中,反转单链表是一个常见的操作,可以使用迭代或递归的方式实现。这里提供一个使用迭代法的Python示例代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head):
prev = None # 初始化前驱节点为None
current = head # 当前节点初始化为头节点
while current is not None: # 当当前节点非空
next_temp = current.next # 记录下一个节点
current.next = prev # 将当前节点的next指向前驱节点
prev = current # 移动前驱节点到当前位置
current = next_temp # 移动当前节点到下一个节点
return prev # 返回新的头节点,即原链表的尾部
# 使用示例
# 创建链表:1 -> 2 -> 3 -> 4 -> 5
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)
# 反转链表
reversed_head = reverseList(head)
# 打印逆置后的链表:5 -> 4 -> 3 -> 2 -> 1
while reversed_head:
print(reversed_head.val, end=" -> ")
reversed_head = reversed_head.next
```
在这个例子中,`reverseList`函数接收一个链表的头节点作为输入,通过循环和临时变量交换节点,实现了链表的逆置。
阅读全文