己知长度未知的线性表L采用链表结构。设计 一个时间复杂度为O(n)空间复杂度为O(1)的算法,该算 法实现单链表逆置
时间: 2024-05-15 09:14:57 浏览: 54
故时间复杂度T(n)=O(n²)-数据结构课件(C语言版)
思路:
1. 定义三个指针:pre、cur、next,分别指向当前节点的前一个节点、当前节点和当前节点的后一个节点。
2. 遍历链表,将当前节点的 next 指针指向前一个节点,更新三个指针的位置,继续遍历。
3. 遍历完成后,将原链表的头节点指向逆置后的链表的头节点即可。
代码实现:
```
void reverseList(ListNode* &head) {
ListNode* pre = nullptr;
ListNode* cur = head;
ListNode* next = nullptr;
while (cur != nullptr) {
next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
head = pre;
}
```
时间复杂度为O(n),空间复杂度为O(1)。
阅读全文