C语言关于链表删除某个节点的问题,不知道写法,麻烦指点

struct node *delete(struct node*q)//删除函数
{
printf("请输入要删除的学生姓名");
char k[10];
scanf("%s", &k);
struct node *temp = NULL;
while (q!=NULL)
{
if (strcmp(q->next->data.name, k) == 0)
{
temp = q->next;
q->next = temp->next;
printf("已删除\n");
free(temp);
return q;
}
else
{
q = q->next;
}
}
}

struct node *delete(struct node* head)//删除函数
{
printf("请输入要删除的学生姓名");
char k[100];
scanf("%s", k);
struct node *pre = NULL;
struct node *q   = head;
while (q) {
if (strcmp(q->data.name, k) == 0){
if (pre)
pre->next = q->next;
else 
head = q->next;
free(q);
break;
}
pre = q;
q = q->next;
    }
return head;
}

追问

大哥你好,请问可以注释一下咩,新手表示有点难看懂,怕自己理解的意思导致思路不对,从而导致越学越歪

温馨提示:答案为网友推荐,仅供参考
相似回答