C语言编程。函数Delete()

来源:百度知道 编辑:UC知道 时间:2024/08/20 12:57:31
假设学生链表中的结点结构及含义定义如下:
struct Student
{
long number; //学号
Student *next; //指向下一个结点的指针
};
函数Delete()是从链表中将指定学号的学生结点删除,它有两个参数:head是学生链表的链首指针,number是被删除结点的学生学号,请完成该函数并验证之。

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 ");
}

}

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;
}
}

格式自己调