🕺作者: 主页
我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 算法题上机准备 😘欢迎 ❤️关注 👍点赞 🙌收藏 ✍️留言
题目
试编写算法将带头结点的单链表就地逆置,所谓“就地”是指辅助空间复杂度为0(1)。
算法思路
使用三个指针分别指向“前一个”“当前”“后一个”,然后利用循环不断的将当前节点的next指向前一个节点,最后进行细节处理,将头指向pre
题解
void reverseList(LinkedList& L) {
if (L == NULL)return;
LNode* p = L->next;
LNode* next = NULL;
LNode* pre = NULL;
while (p) {
next = p->next;
p->next = pre;
pre = p;
p = next;
}
L->next = pre;
}