第30行 p = L->next->next; 这里是为了什么,让 p 指向链表的第2个结点?
应该是链表中有指向未初始化的内存的指针。通常来说未初始化的内存是随机值,Visual Studio 调试状态下会给初始化的内存用 0xcc 填充(详细请搜索《手持两把锟斤拷,口中疾呼烫烫烫》)
void Xdelete(LinkList &L, int x)
{
LinkList p;
p = L->next;
if (p == NULL)
{
return;
}
while (p != NULL)
{
if (p->data == x)
{
LinkList q;
q = p;
p = p->next;
free(q);
Xdelete(L, x);
}
else
{
p = p->next;
}
}
return;
}
int main()
{
LinkList L;
ListHeadInsert(L);
Xdelete(L, 6);
}