例题详解:
学生信息管理
查找特定学号,并删除
依然利用双指针技巧,p与pf进行位置确定
struct student {
int stunum;//学号
char name[20];//姓名
float examscore;//考试成绩
float labscore;//实验成绩
float totalmark;//总评成绩
struct student *next;//下一个结点
};
struct student *dele(struct student *head,int stunum) {
struct student *qf=head,*q=head->next;//q为比较的位置,qf来记录前一位置
while(q!=NULL&&q->stunum!=stunum) {
qf=q;
q=qf->next;//不相等同时后移
}
if(q==NULL) {
printf("学号不存在!!\n");//遍历结束
} else {//找到q
qf->next=q->next;//(直接跳过q)
free(q);//释放 q的空间;
}
return(head);
}