C语言编程。函数Delete()

假设学生链表中的结点结构及含义定义如下:
struct Student
{
long number; //学号
Student *next; //指向下一个结点的指针
};
函数Delete()是从链表中将指定学号的学生结点删除,它有两个参数:head是学生链表的链首指针,number是被删除结点的学生学号,请完成该函数并验证之。

第1个回答  推荐于2016-11-18
void delete_student(student *L,long studentnum)
{
int flag = 0;

student * p = L,*q = p->next;

while(q)
{
if(q->number == studentnum)
{
flag = 1;
q = q->next;
break;
}
else
{
p = q;
q = q->next; /*下一个结点*/
}
}
if(flag == 0)
printf("删除学生失败,不存在这个学号的学生\n");
else{
printf("删除学生成功! \n ");
}

}本回答被提问者采纳
第2个回答  2008-12-24
delete(student * head, long number)
{
student *tmp;
tmp = head;
while((*tmp)->next != NULL){
if(((*tmp)->next)->number == number)
{
(*tmp)->next = (*tmp)->next->next;
free((*tmp)->next);
return;
}
*tmp = (*tmp)->next;
}
}

格式自己调
第3个回答  2019-03-09
void
delete_student(student
*L,long
studentnum)
{
int
flag
=
0;
student
*
p
=
L,*q
=
p->next;
while(q)
{
if(q->number
==
studentnum)
{
flag
=
1;
q
=
q->next;
break;
}
else
{
p
=
q;
q
=
q->next;
/*下一个结点*/
}
}
if(flag
==
0)
printf("删除学生失败,不存在这个学号的学生\n");
else{
printf("删除学生成功!
\n
");
}
}
第4个回答  2008-12-24
void Delete(student *head, long number)
{
student *p;
long m;
m=number;
p=head;
printf("输入要删除学生的学号:");
scanf("%ld",m);
while(p->next!=NULL)
{ if(p->number==m)
p->next=p->next->next;
}
if(p->next=NULL)
printf("不存在该学生!");
else
printf("成功删除!"):
}
有错误的话自己改改
第5个回答  2008-12-24
void delete(Student * head, long mum){
Student * p,pr;
p=head;
pr=head;
while(p-->next!='\0')
if(p-->number != num){
pr=p;
p=p-->next;
}else{
pr-->next=p-->next;
}
free p;
}
相似回答