单向链表逆转: 设已经建立一条单向链表,现欲将各个结点的next域指向其前驱结点,使得单向链表逆转过来
时间: 2024-10-07 21:07:50 浏览: 31
单向链表逆转是指改变每个节点的下一个指针方向,使其指向原来的前一个节点,从而达到整个链表头结点变尾,尾结点变头的效果。以下是递归和迭代两种常见方法实现单向链表逆转:
1. **递归**方法:
- 首先检查链表是否为空或者只有一个元素,这种情况下直接返回。
- 否则,将当前节点的`next`指向前一个节点,并对剩余部分链表递归地进行逆转。
```python
def reverseList(head):
if head is None or head.next is None:
return head
new_head = reverseList(head.next)
head.next.next = head
head.next = None
return new_head
```
2. **迭代**方法:
- 定义两个指针,一个`prev`初始为None,另一个`current`等于头节点。
- 当`current`不为None时,更新`prev`的`next`为`current`,然后将`current`移动到下一个节点。
- 最后返回`prev`作为新的头节点。
```python
def reverseList(head):
prev = None
current = head
while current is not None:
next_temp = current.next
current.next = prev
prev = current
current = next_temp
return prev
```
阅读全文