链表
哪里有错啊#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#define stu struct student
stu{
char name;
int age;
int wage;
stu *next;
};
stu *creat(void)
{
int n;
stu *head;
stu *p1, *p2 ;
n = 0;
p1 = p2 = (struct student *)malloc(sizeof(struct student));
scanf("%s,%d,%d",p1->name, &p1->age, &p1->wage);
head = NULL;
while(p1->age!=0)
{
n = n + 1;
if (n == 1)
{
head = p1;
}
else
{
p2->next = p1;
}
p2 = p1;
p1 =(struct student *)malloc(sizeof(struct student));
scanf("%s,%d,%d",p1->name, &p1->age, &p1->wage);
}
p2->next=NULL;
return head;
}
void output(stu *p)
{
while(p!=NULL)
{
printf("%s:",p->name);
printf("age=%d wage=%d\n",p->age,p->wage);
p=p->next;
}
}
int main ()
{
stu *p;
p=creat();
output(p);
} 你先把define改用typedef
然后main函数中return 0; 本帖最后由 理想小青年 于 2018-6-12 09:05 编辑
你代码调试之后
问题1: 死循环while p1->age根本没有值,因为你的if语句的问题 把if修改一下,否则p1->age 永远不等于0,永远进入循环
问题2 :代码中&p->name这个注意一下
问题3 :主函数int main(void)这样定义规范一些 返回值return 0;
scanf("%[^,],%d,%d",p1->name, &p1->age, &p1->wage);这么试试吧
页:
[1]