一道简单的数据结构题?
huore 2002-03-15 01:46:20 本人刚开始学习C数据结构,遇到一个小问题,请帮忙。
/*用单链表遍一个学生成绩系统。具有查询成绩,修改成绩,删除成绩,添加 成绩全班平均*/
#include <stdlib.h>
struct list
{int index;
int number;
int chinese,english,math;
struct list *next;
};
typedef struct list node;
typedef node *link;
int inquire(link head,int index)
{link pointer;
pointer=head;
while(pointer!=NULL)
{printf("Student scores\n");
printf("%d ",index);
printf(" School Number:%d\n",pointer->number);
printf(" Chinese score:%d\n",pointer->chinese);
printf(" English score:%d\n",pointer->english);
printf(" Math score:%d\n",pointer->math);
pointer=pointer->next;
}
}
int modify(link head)
{link pointer;
pointer=head;
int chinese0,english0,math0;
int index0;
scanf("%d",index0);
while(pointer!=NULL)
{if(pointer->index==index0)
{printf("========================================");
printf("=1.Modify Number =");
prinrf("=2.Modify Name =");
prinrf("=3.Modify Chineae score =");
prinrf("=4.Modify English score =");
prinrf("=5.Modify Math score =");
printf("========================================");
printf("Please input your choose");
int select;
scanf("%d",select);
switch(select)
{case 1: printf(" School Number:\n",number0);
int number0;
scanf("%d",number0);
pointer->number=number0;
break;
case 2:
break;
case 3: printf(" Chinese score:\n",chinese0);
int chinese0;
scanf("%d",chinese0);
pointer->chinese=chinese0;
break;
case 4: printf(" English score:\n",english0);
int english;
scanf("%d",english);
pointer->english=english0;
break;
case 5: printf(" Math score:\n",math0);
int math0;
scanf("%d",math0);
pointer->math=math0;
break;
}
pointer=pointer->next;
}
}
delet(link head)
{link pointer;
link back;
pointer=head;
int index1;
printf("Please input the student index you want to delete\n");
scanf("%d",index1);
while(pointer!=NULL)
{if(head.>next=index1)
{head=pointer->next;
free(pointer);
break; }
back=pointer;
pointer=pointer->next;
if(pointer->index=index1)
{back->next=pointer->next;
free(pointer);
}
}
return head;
}
link add(link head)
{ link pointer;
pointer=head;
link new0;
int index2=0;
int number1;
int chinese1,english1,math1;
new0=(link)malloc(sizeof(node));
while(pointer!=NULL)
{pointer=pointer->next;
index2++}
new0->index=index2;
printf("Please Input the data\n");
printf("School Number\n");
scanf("%d",number1);
new0->number1;
printf("Chinese\n");
scanf("%d",chinese1)
new0->chinese=chinese1;
printf("English\n");
scanf("%d",english1);
new0->english=english1;
printf("Math");
scanf("%d",math1);
new0->math=math1;
pointer->next=new0->next;
pointer->next=new0;
}
link average(head)
{ link pointer;
pointer=head;
int sum,i,ave;
i=0;
sum=0;
while(pointer!=NULL)
{sum=pointer.>chinese+pointer.>english+pointer.>math+sum;
pointer=pointer->next;
i++;
}
ave=sum/i;
printf("Score average Is:%d",ave);
}
void main()
{
link head;
head=(link)malloc(sizeof(node));
int selection;
while(1)
{printf("========================================");
printf("=Simple Student Score Management System=");
prinrf("=1.inquire student score =");
prinrf("=2.modify student score =");
prinrf("=3.delete student score =");
prinrf("=4.add student score =");
prinrf("=5.student average score =");
prinrf("=6.quit =");
printf("========================================");
printf("Please input your choose");
scanf("%d",selection);
switch(selection)
{case 1:inquire(head);
break;
case 2:modify(head);
break;
case 3:delet(head);
break;
case 4:add(head);
break;
case 5:average(head);
break;
case 6:
exit(1);
break;
}
}
}