C语言代码运行的时候,char在int前面,输入数据的时候“,12”被归入char,而int部分数据,求各位大神指点一下。
代码如下:
#include<stdio.h>
#include<stdlib.h>
struct student
{
long num;
char name[20];
int old;
struct student *next;
};
typedef struct student List;
List* creatlist();
List* insertlist(List *h,List *s);
List* deletelist(List *h,long num);
void displist(List *h);
void main()
{
List *h,*p;
long num;
h=creatlist();
printf("学号 姓名 年龄:\n");
displist(h);
printf("输入要插入的节点元素:\n");
p=(List*)malloc(sizeof(List));
scanf("%d,%s,%d",&p->num,p->name,p->old);
h=insertlist(h,p);
printf("学号 姓名 年龄:\n");
displist(h);
printf("输入一个要删除节点的学号:\n");
scanf("%d",&num);
h=deletelist(h,num);
printf("学号 姓名 年龄:\n");
displist(h);
}
List* creatlist()
{
List *h,*pre,*p;
int i,n;
h=NULL;
printf("请输入创建链表个数:\n");
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
p=(List*)malloc(sizeof(List));
p->next=NULL;
if(h==NULL)
{
h=p;
}
else
{
pre=p->next;
}
scanf("%d,%s,%d",&p->num,p->name,p->old);
pre=p;
}
return h;
}
List* insertlist(List *h,List *s)
{
List *pre,*p;
p=h;
if(h==NULL)
{
h=s;
s->next=NULL;
}
else
{
while((s->num>p->num)&&(p->next!=NULL))
{
pre=p;
p=p->next;
}
if(s->num<=p->num)
{
if(h==p)
{
h=s;
s->next=p;
}
else
{
pre->next=s;
s->next=p;
}
}
else
{
p->next=s;
s->next=NULL;
}
}
return h;
}
List* deletelist(List *h,long num)
{
List *pre,*p;
if(h==NULL)
{
printf("链表为空,删除失败!\n");
return 0;
}
p=h;
while(p->num!=num&&p->next!=NULL)
{
pre=p;
p=p->next;
}
if(p->num=num)
{
if(p==h)
h=p->next;
else
pre->next=p->next;
free(p);
printf("成功删除!\n");
}
else
printf("没有找到要删除的节点。\n");
return h;
}
void displist(List *h)
{
List *p=h;
while(p!=NULL)
{
printf("%d %s %d\n",p->num,p->name,p->old);
p=p->next;
}
}