第1个回答 2012-06-03
与题目相似,仅供参考一下
#include<stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct LNode
{
int num;
char name[10];
float score;
struct LNode *next;
} LNode, *LinkList;
extern LNode * insert(LinkList L);
extern LNode * get(LinkList L);
extern LNode * delet(LinkList L);
extern void print(LinkList L);
LNode * insert(LinkList L)
{
LinkList p,s,q;
s=(LinkList )malloc(sizeof( LNode));
scanf("%d,%s,%f",&s->num,&s->name,&s->score);
while(s->num!=0)
{
p=L;
while(p&&p->num<s->num)
{
q=p;
p=p->next;
}
s->next=p;
q->next=s;
s=(LinkList )malloc(sizeof(LNode));
scanf("%d,%s,%f",&s->num,&s->name,&s->score);
}
return(L);
}
LNode * get(LinkList L)
{
LinkList p,p=l->next;
scanf("%d",&p->num);
if(!p->next)
{
printf("No such student\n");
return (L);
}
return(L);
}
LNode * delet(LinkList L)
{
LinkList p=L,q;
int num;
scanf("%d",&num);
while(p->next&&p->next->num!=num)
{
p=p->next;
}
if(!p->next)
{
printf("No such student\n");
return (L);
}
q=p->next;
p->next=q->next;
free(q);
return(L);
}
void print(LinkList L)
{
LinkList p=L->next;
while(p)
{
printf("学号 姓名 成绩\n");
printf("%d,%s,%f",&p->num,&p->name,&p->score);
p=p->next;
}
}
int main()
{
int sel;
LinkList L;
L=(LinkList)malloc(sizeof(struct LNode));
if(!L)
exit(0);
L->num=0; L->next=NULL;
do
{
printf("选项:1. 录入学生成绩 2.查询学生成绩 3. 删除学生成绩 4.显示班级成绩 0. 退出\n");
scanf("%d",&sel);
switch(sel)
{
case 1: insert(L);break;
case 2: delet(L);break;
case 3: get(L);break;
case 4: print(L);break;
case 0: break;
default: printf("错误选择,请重新选择0-4\n"); break;
}
}while (sel!=0);
return 0;
}