回复 9楼 TonyDeng
我按您的方式把我1L的代码重新改了下,一开始出现的问题解决了,但还不是十分清楚其中的原理。未改前我会出现这种情况:假设张三是头结点的信息
The contact name is :张三
The contact number is:123456789
输入要删除的名字:张三
在头结点显示的那个地方
The contact name is:乱码
The contact number is :123456789
把代码改成:
void deletbyname(struct telephone** head,char *name)
{
struct telephone *current;
struct telephone *pre;
int p=0;
current=*head;
if(strcmp(current->name,name)==0)
{
*head=current->next;
free(current);
p=1;
return;
}
while(current!=NULL)
{
if(strcmp(current->name,name)==0)
{
pre->next=current->next;
free(current);
p=1;
break;
}
pre=current;
current=current->next;
}
if(p==0)
printf("查无此人\n");
}
就解决了