(1)将一个已知的单链表进行逆置运算,如(a1,a2,…,an)变为(an,…a2,a1)。
时间: 2023-06-13 08:02:55 浏览: 103
可以使用迭代或递归的方法来实现单链表的逆置运算。
迭代实现:
1. 定义三个指针prev、curr、next,分别指向当前节点的前一个节点、当前节点和下一个节点。
2. 遍历链表,对于每个节点,将当前节点的next指向prev,然后将三个指针分别向后移动一个节点。
3. 当遍历到链表尾部时,将尾节点的next指向prev,表示逆置完成。
以下是迭代实现的代码:
```python
def reverseList(head):
prev, curr = None, head
while curr:
next = curr.next
curr.next = prev
prev = curr
curr = next
return prev
```
递归实现:
1. 对于一个链表,将其逆置后的头节点为原链表的尾节点。
2. 假设链表头节点为head,逆置后的头节点为newHead,则可以通过递归获取newHead和head.next之间的关系。
3. 递归结束条件为head为None或head.next为None,此时返回head即可。
以下是递归实现的代码:
```python
def reverseList(head):
if not head or not head.next:
return head
newHead = reverseList(head.next)
head.next.next = head
head.next = None
return newHead
```
注意:递归实现虽然简洁,但是由于涉及到函数调用栈的额外空间开销,当链表长度很大时可能会导致栈溢出的问题。因此,迭代实现的效率更高,也更加稳定。
阅读全文