- 注册时间
- 2004-10-13
- 最后登录
- 2019-5-15
⑧专业
*永恒国度*
- 积分
- 14145
|
void insert()
{
struct list *p1,*p2,*p3;
float x1;
p2=head;
p1=(struct list *)malloc(sizeof(struct list));
printf("please enter new number:");
scanf("%d",&p1->num);
printf("please enter the score:");
scanf("%f",&x1);
p1->cash=x1;
if(head==NULL)
{
head=p1;
p1->next=NULL;
}
else
{
while(p1->num>p2->num && p2->next!=NULL)
{
p3=p2; // p3接收p2的前一个值
p2=p2->next;
}
if(p1->num<p2->num)
{
if(p2==head)
{
head=p1;
p1->next=p2;
}
else
{
p3->next=p1;
p1->next=p2;
}
}
else
{
p2->next=p1;
p1->next=NULL;
}
}
}
这个根据num大小插入数据的函数
如果按这个写法,比如已输入数据:
num:1 score:10
num:2 score:20
num:3 score:30
在这已有的数据上,如果用这个插入函数输入 num:2 score:25 全部数据就变成
num:1 score:10
num:2 score:20
num:2 score:25
num3就不见了,为什么会这样呢?
如果在这句 if(p1->num<p2->num)
把< 改为 <= 才不会把 num3去掉,到底是什么原因呢?[s:6] |
|