链表的操作(链表的建立,访问,删除链表指定结点,增加结点) C语言

2024年11月19日 15:39
有2个网友回答
网友(1):

#include
#include
#include
typedef struct student
{
char number[10];
float score;
student* next;
}student,*stlink;
void creat(stlink & head)
{
stlink q,p,temp;
if (head==NULL)
{
printf("无学生记录");
}
else
{
q=head=new student[sizeof(student)];
do
{
printf("请输入学生学号和分数:");
p=new student[sizeof(student)];
scanf("%s %f",p->number,&p->score);
if(strcmp(p->number,"0")==0 || p->score==0)
{
break;
}
q->next=p;
q=p;

}while(p->score);
q->next=NULL;
}
}
void show(stlink head)
{
stlink p;
p=head->next;
int i=0;
float min=200,max=-1,sum=0,average;
while (p)
{
printf("%s %.1f\n",p->number,p->score);
if (min>p->score) min=p->score;
if (maxscore) max=p->score;
sum+=p->score;
i++;
p=p->next;
}
average=sum/i;
if(head->next!=NULL)
printf("最小值:%.1f 最大值:%.1f 平均值:%.2f \n",min,max,average);
else
printf("没有记录!\n");
}
void dele(stlink& head)
{
stlink p,q;
p=q=head;
char number[20];
printf("请输入要删除的学生账号:");
scanf("%s",number);

while (p->next)
{ q=p;
if(strcmp(p->next->number,number)==0) {p=p->next;break;}
p=p->next;
}
if (q==NULL)
{
printf("没有找到记录.\n");
}
else
{
q->next=p->next;
free(p);
}
}
void main()
{
stlink head;
creat(head);
show(head);
while(1)
{
dele(head);
if(head==NULL) printf("没有记录!\n");
else
show(head);
}
}

//10分有点少,帮你完成大部分功能。。。其他都是小问题

网友(2):

不会