下面是小弟自己自己写的,还没编好
请问插入的一个结点怎么往里加啊?
具体些加到哪里?
还有,不知道我定义的链表对不对,请高手帮帮忙讲解一下
小弟在这里谢谢了!!
#include<string.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
char num[6];
char name[8];
int age;
float score[5];
struct student *next;
}stu[10];main()
{struct student*p,*pt,*head;
int i,length,iage,flag=1;
int find=1;
/*找到待删元素find=1,否则find=0*/
while(flag==1)
{printf("输入链表长度(<10):\n");
scanf("%d",&length);
if(length<10)
flag=0;
}
/* 建立链表*/
for(i=0;i<length;i++)
{p=(struct student*)malloc(LEN);
if(i==0)
head=p;
else
pt->next=p;
pr=p;
printf("单号");
scanf("%s",p->num);
printf("姓名");
scanf("%s",p->name);
printf("年龄");
scanf("%d",&p->age);
printf("数学成绩");
scanf("%f",&p->stu.score[0]);
printf("英语成绩");
scanf("%f",&p->stu.score[1]);
printf("物理成绩");
scanf("%f",&p->stu.score[2]);
printf("化学成绩");
scanf("%f",&p->stu.score[3]);
printf("体育成绩");
scanf("%f",&p->stu.score[4]);
}
p->next=NULL;
p=head;
printf("\n 学号 姓名 年龄 数学成绩 英语成绩 物理成绩 化学成绩 体育成绩\n")
/*显示*/
while(p!=NULL)
{
printf("%8s%8s%6d%6f%6f%6f%6f%6f\n",p->num,p->name,p->age,p->stu.score[0],p->stu.score[1],p->stu.score[2],p->stu.score[3],p->stu.score[4]);
p=p->next;
}
/*删除*/
printf("请输入年龄:");
/*输入待删年龄*/
scanf("%d",&iage);
pt=head;
p=pt;
if(pt->age==iage)
/*链头是待删元素*/
{
p=pt->next;
head=pt=p;
find=1;
}
else
/*链头不是待删元素*/
pt=pt->next;
while(pt!=NULL)
{
if(pt->age==iage)
{ p->next=pt->next;
find=1;
}
else/*中间结点不是待删元素*/
p=pt;
pt=pt->next;
}
if(!find)
printf("没有找到 %d",iage);
p=head;
printf("\n 学号 姓名 年龄 数学成绩 英语成绩 生物成绩 化学成绩 体育成绩\n");
while(p!=NULL)
{ printf("%8s%8s%6d%6f%6f%6f%6f%6f\n",p->num,p->name,p->age,p->stu.score[0],p->stu.score[1],p->stu.score[2],p->stu.score[3],p->stu.score[4]);
p=pt->next;
}
}