将一个已知的单链表进行逆置运算,例如(a1,a2,...,an)变为(an,...a2,a1)
时间: 2023-06-12 12:06:37 浏览: 131
可以使用迭代或递归方法实现单链表的逆置。
迭代方法:
1. 初始化三个指针:prev、current、next,分别指向前一个节点、当前节点和下一个节点;
2. 遍历单链表,将当前节点的 next 指针指向前一个节点 prev,然后依次向后移动 prev、current 和 next 指针;
3. 当遍历完整个单链表时,prev 指向原来单链表的最后一个节点,即逆置后的第一个节点。
以下是迭代方法的示例代码:
```python
def reverseList(head):
prev = None
current = head
while current:
next = current.next
current.next = prev
prev = current
current = next
return prev
```
递归方法:
1. 先递归到最后一个节点;
2. 在递归的回溯过程中,将当前节点的 next 指针指向前一个节点;
3. 递归结束后,最后一个节点变为逆置后的第一个节点。
以下是递归方法的示例代码:
```python
def reverseList(head):
if not head or not head.next:
return head
new_head = reverseList(head.next)
head.next.next = head
head.next = None
return new_head
```
阅读全文