用python仅适用固定数量的额外空间,并且不适用任何递归,详细阐述一个逆置单项链表L的算法
时间: 2023-05-29 08:07:47 浏览: 86
单链表逆置算法详解
算法思路:
- 创建一个新的链表,作为逆置后的链表。
- 遍历原链表,将每个节点插入到新链表的头部。
- 返回新链表作为逆置后的链表。
算法步骤:
1. 创建一个新链表,并将其头节点设置为 None。
2. 遍历原链表,每次取出一个节点,将其插入到新链表的头部。
3. 返回新链表。
Python 代码实现:
```python
class Node:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head: Node) -> Node:
# 创建一个新链表,头节点为 None
new_head = Node()
# 遍历原链表
while head:
# 取出原链表中的头节点
cur = head
head = head.next
# 将取出的节点插入到新链表的头部
cur.next = new_head.next
new_head.next = cur
# 返回新链表
return new_head.next
```
时间复杂度:O(n)
空间复杂度:O(1) (只需要常数个额外的指针变量)
阅读全文