int delect_list(link *head, int num)
{
if(head == NULL)
{
return -1;
}
link *p = NULL;
link *q = NULL;
for(q = head,p = q->next; p!=NULL;q = p, p = p->next)
{
if(p->elem == num)
{
q->next = p->next;
free(p);
}
}
return 0;
}
int main()
{
link *head = NULL;
head = Linklist_Init(head);
List_tail(head, 10);
List_tail(head, 20);
List_tail(head, 30);
List_tail(head, 40);
List_show(head);
delect_list(head, 20);
List_show(head);
return 0;
}
请问一下大佬们,我这个删除链表写的有没有问题呢,在Linux虚拟机上可以删除,并打印出来结果。用VC++6.0上运行,出错了,只打印了上面一个List_show,下面一个List_show 打印不出来,下面是VC++6.0的运行结果,正常情况下第一行打印 5 10 20 30 40 第二行打印
2 10 30 40 ,但是第二行缺没有打印出来。