我在做练习,写一个动态的单向链表,实现创建,删除功能,创建链表完成后,输入数据时,出现了问题,我把代码发出来,前辈们帮看看,问题出在哪?
#include <stdio.h>#include <malloc.h>
#define LEN sizeof(struct student)
struct student *creat();struct student *delet(struct student *head,int a);void print(struct student *head);
int n;
struct student{ int num; float score; struct student *next;};
void main(){ struct student *p,*y; int b; p=creat(); printf("请输入要删除的结点:"); scanf("%d",&b); y=delet(p,b); print(y); }
struct student *creat(){ struct student *head,*p1,*p2; p1=p2=(struct student *)malloc(LEN); n=0; head=NULL; printf("请输入学号:"); scanf("%d",&p1->num); printf("请输入分数:"); scanf("%f",&p1->score);//这一步的时候,就出现问题了,把%f改成%d,把上面struct student里的float score改成int,就没问题了,这是什么回事呀 while(p1->num!=0) { n++; if(n==1) { head=p1; } else { p2->next=p1; } p2=p1; p1=(struct student *)malloc(LEN); printf("请输入学号:"); scanf("%d",&p1->num); printf("请输入分数:"); scanf("%f",&p1->score); }
free(p1); p2->next=NULL;
return head;}
struct student *delet(struct student *head,int a){
}
void print(struct student *head){
}
我把运行后出问题的图片贴出来,前辈们帮看看,是怎么回事
å äº\nè¿æ¯ä¸è¡åããã
追çç¡®å®æ¯ç¯å¢çé®é¢ï¼å¥½äºï¼æä½ ä¸ªåæ³ï¼
æ代ç æ·è´ä¸ä¸ï¼éæ°ç¼è¯å°±å¥½äºãä¸è¦å¤ªè®¤çï¼è¿ç§äºæµªè´¹æ¶é´ã
#include
#include
#define LEN sizeof(struct student)
struct student *creat();
struct student *delet(struct student *head,int a);
void print(struct student *head);
int n;
struct student
{
int num;
float score;
struct student *next;
};
void main()
{
struct student *p,*y;
int b;
p=creat();
printf("请è¾å
¥è¦å é¤çç»ç¹ï¼");
scanf("%d",&b);
y=delet(p,b);
print(y);
}
struct student *creat()
{
struct student *head,*p1,*p2;
p1=p2=(struct student *)malloc(LEN);
n=0;
head=NULL;
printf("请è¾å
¥å¦å·ï¼");
scanf("%d",&p1->num);
printf("请è¾å
¥åæ°:");
scanf("%f",&p1->score);
while(p1->num!=0)
{
n++;
if(n==1)
{
head=p1;
}
else
{
p2->next=p1;
}
p2=p1;
p1=(struct student *)malloc(LEN);
printf("请è¾å
¥å¦å·ï¼");
scanf("%d",&p1->num);
printf("请è¾å
¥åæ°:");
scanf("%f",&p1->score);
}
free(p1);
p2->next=NULL;
return head;
}
struct student *delet(struct student *head,int a)
{
return head;
}
void print(struct student *head)
{
}
我用getchar(p1->score),但是不给输入,,
追答getchar 是从屏幕获取一个字符。兄弟。你用错了。
追问那应该换哪个呀?,,
我的代码应该没有问题吧?上一次做练习时这样还行,现在就不行了,,