#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 3
typedef struct node
{
char sno[20];
char name[20];
int score[M];
double avg;
struct node *next;
}linklist;
linklist *create()//尾插法创立链表
{
linklist *head,*p,*t;
int n,i,j;
printf("请输如学生人数::");
scanf("%d",&n);
head=(linklist*)malloc(sizeof(linklist));
t=head;
for(i=0;i<n;i++)
{
p=(linklist*)malloc(sizeof(linklist));
printf("输入学号:");
scanf("%s",p->sno);
printf("输入姓名:");
scanf("%s",p->name);
printf("输入%d门功课成绩:",M);
for(j=0;j<M;j++)
scanf("%d",&p->score[j]);
t->next=p;
t=p;
}
p->next=NULL;
return head;
}
void insert(linklist*head)//插入学生数据
{
linklist *p;
int i,n;
printf("输入你要插入的学生人数:");
scanf("%d",&n);
printf("你要插入的学生信息:\n");
for(i=0;i<n;i++)
{p=(linklist*)malloc(sizeof(linklist));
p->next=head->next;
head->next=p;
printf("输入学号:");
scanf("%s",p->sno);
printf("输入姓名:");
scanf("%s",p->name);
printf("输入%d门功课成绩:",M);
for(i=0;i<M;i++)
scanf("%d",&p->score[i]);}
}
void del(linklist*head)//删除学生信息
{
linklist *p,*q;
char s[20];
printf("输入要删除学生的姓名:");
scanf("%s",s);
p=head->next;
while(strcmp(p->sno,s)!=0)
{ q=p;
p=p->next;
if(p==NULL)
printf("无此人\n");
else
q->next=p->next->next;
free(p);
}
void change(linklist*head)
{
linklist*p;
int i,a[M];
char s[20];
printf("输入你要修改数据的学生姓名:");
scanf("%s",s);
p=head->next;
while(strcmp(p->sno,s)!=0)
p=p->next;
if(p==NULL)
printf("无此人\n");
else
{ printf("%s\t%s\t%d",p->sno,p->name);
printf("请重新输入学生的%d成绩:",M);
for(i=0;i<M;i++)
{ scanf("%d",&a[i]);
p->score[i]=a[i];
}
}