|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
struct link *Num4()//输入一个整数,删除这个数在第3项完成后的链表中的所有出现,并输出
{
struct link *temp2 = head;
temp = (struct link*)malloc(sizeof(struct link));
if(temp == NULL)
{
printf("内存分配失败!\n");
exit(1);
}
else
{
printf("请输入一个整数:");
scanf("%d",&temp->data);
temp->next = NULL;
while(temp2 != NULL)
{
if(temp == temp2->next)
{
temp2->next = temp2->next->next;
temp2 = temp2->next;
}
else
temp2 = temp2->next;
}
}
Printlink(head);
free(temp);
return head;
}
删除链表中所有与输入值相同的元素,不知道上边这个错哪了,求助求助
if语句应该比较结点的数字域,而不是指针域。
另外你的删除方式也错了,你是这样写的:temp2->next = temp2->next->next; temp2 = temp2->next; 这样子的话你的temp2 = 原来的temp2->next->next,也就是说你最后free掉的并不是你想删除的那个结点。正确的删除应该这样写:定义一个同类型结点temp3=temp2->next,temp2->next=temp3->next最后free(temp3)
|
|