【考点 · 6级】链表概念 —— 属于数据结构基础,是理解动态数据组织的核心。
【说人话】
数组是"一排连续的格子",链表是"一串用绳子串起来的珠子"。每个节点(珠子)存两样东西:数据和指向下一个节点的指针。好处是增删不用挪动后面的元素,坏处是不能随机访问(不能直接跳到第 n 个)。
cur != nullptr,不是 cur->next != nullptr!后者会漏掉最后一个节点。
cur != nullptr 而不是 cur->next != nullptr?int getLength(Node* head),返回链表的节点个数。int getLength(Node* head) {
int cnt = 0; // 计数器初始化为0
Node* cur = head; // 从头开始遍历
while (cur != nullptr) { // 每次处理一个节点
cnt++; // 计数+1
cur = cur->next; // 移到下一个节点
}
return cnt; // 返回总节点数
}
1. 忘记释放内存 —— 用 new 创建的节点,程序结束前要用 delete 释放,否则内存泄漏。
2. 遍历判断条件 —— while(cur != nullptr) 是标准写法,while(cur->next != nullptr) 会漏掉尾节点。
3. 头指针丢失 —— 头插法必须返回新头:head = insertHead(head, val),不能直接调用 insertHead(head, val) 然后不管返回值。
4. 空链表边界 —— 写函数时第一件事检查 head == nullptr,防止对空指针解引用。