第一种:不释放内存
void quit(node *head)
{
node *p,*q,*t;
p = head;
t = (node*)malloc(sizeof(struct node));
scanf("%s",t->name);
while(p){//删除节点
q = p->next;
if(strcmp(q->name,t->name)==0){//比较字符串的时候最好还是用strcmp函数,用==的话容易出错
p->next = q->next;//当找到符合name的节点时,q的前一个节点p的后继变为q的后继
q = p->next;//同时,q也往后移动,变为p的后继(???不懂为什么不行q = q->next
break;
}
p = p->next;
}
}//我看以后删除节点都用free好了,这样又好理解又省内存
第二种:释放内存
void quit(node *head)
{
node *p,*q,*t;
p = head;
t = (node*)malloc(sizeof(struct node));
scanf("%s",t->name);
while(p){//删除节点
q = p->next;
if(strcmp(q->name,t->name)==0){//比较字符串的时候最好还是用strcmp函数,用==的话容易出错
p->next = q->next;//当找到符合name的节点时,q的前一个节点p的后继变为q的后继
free(q);
break;
}
p = q;
}
}//我看以后删除节点都用free好了,这样又好理解又省内存