第一章 线性表
1.1 顺序表操作边界问题
错误场景:插入/删除操作未检查位置合法性
// 错误示例:未检查i的范围
void InsertSeqList(SeqList *L, int i, int e) {for (int j = L->length; j >= i; j--)L->data[j] = L->data[j-1];L->data[i-1] = e;L->length++;
}
正确实现:
int InsertSeqList(SeqList *L, int i, int e) {if (i < 1 || i > L->length+1) return 0;if (L->length >= MAXSIZE) return 0;// ...后续操作
}
1.2 链表指针丢失问题
错误场景:单链表删除节点时断链
// 错误示例:直接free导致断链
p = pre->next;
pre->next = p->next;
free(p);
正确操作:先保存后继节点再删除
p = pre->next;
pre->next = p->next;
free(p);
第二章 栈与队列
2.1 循环队列判满误判
错误实现:
// 错误:使用rear == front判满
#define MAXSIZE