C语言——链表的修改

来源:百度知道 编辑:UC知道 时间:2024/05/15 01:53:34
帮忙编下belongTo函数?

在实验1的基础上,编写解决下面问题的程序,然后上机输入程序并调试运行程序:
1. 编写一个函数belongTo(),它负责检查一个指定的准考证号是否已经在链表中,如果已经存在,则返回在第几个结点,否则返回0。
2.输入一个新考生的信息,以准考证号为排序规则(从小到大),将新结点插入链表(利用belongTo()进行检查,若输入的准考证号已经存在,给出警告并要求重新输入)。编写函数insert()实现这一功能。
3.输入一个要删除的考生的准考证号,将该准考证号的考生结点从链表中删除(利用belongTo()进行检查,若输入的准考证号不存在,给出警告并要求重新输入)。编写函数delete()实现这一功能。
4.假定已经通过实验1按下列6个考生的信息建立了链表:
Num. Name Score
80001 Zhang 270
80002 Li 236
80003 Wang 205
80004 Zhu 211
80005 Liu 234
80007 Huang 245
现要求在main()函数中提供操作选择菜单:
0 :exit
1 : insert
2 : delete
3 : display
当选择1时,调用insert()将类似下列考生的信息插入链表:
80006 Cheng 299
当选择2时,调用delete()从链表中删除类似下列考生的结点:
80003 Wang 205
实验主要步骤:
根据实验内容编写程序
2.输入源代码,纠正可能出现的语法错误。
3.调试程序:可反复地进行插入和修改操作,依次观察链表建立、插入、删除操作后的输出结果,检查程序的正确性。

#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct student)
struct student
{
int num;
char name[20];
float score[3];
struct student *next;
};
int n=0;
struct student *creat(void) //建立链表
{
struct student *head,*p1,*p2;
p1=p2=(struct student *)malloc(LEN);
head=NULL;
scanf("%d %s %f %f %f",&p1->num,p1->name,&p1->score[0],&p1->score[1],&p1->score[2]);
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(LEN);
scanf("%d %s %f %f %f",&p1->num,p1->name,&p1->score[0],&p1->score[1],&p1->score[2]);
}
p2->next=NULL;
return (head);
}
void main() //main函数
{
struct student *insert(struct student *head,struct student *stu);
struct student *del(struct student *head,int num)