NOTES / COMPUTER
链表
链表反转与环检测。
链表(LinkList)
一种逻辑有序,但存储结构无需有序的数据结构。
带虚拟头节点的链表可以统一一些操作。
// 因为头节点有可能发生变化,使用虚拟头节点可以避免复杂的分类讨论
ListNode *dummyNode = new ListNode(-1);
dummyNode->next = head;
链表反转
非递归
void reverseLinkedList(ListNode* head){
ListNode* pre = nullptr;
ListNode* cur = head;
while(cur != nullptr){
ListNode* next = cur->next;
cur->next= pre;
pre = cur;
cur = next;
}
}
递归的实现
ListNode* reverseList(ListNode* head) {
if (!head || !head->next) {
return head;
}
ListNode* newHead = reverseList(head->next);
head->next->next = head;
head->next = nullptr;
return newHead;
}
判定环
ZYK · 笔记与实践返回首页