一个C语言链表问题
#include<stdio.h>#include<stdlib.h>#defineLsizeof(structstu)structstu{intnum;intsco;s...
#include<stdio.h>
#include<stdlib.h>
#define L sizeof(struct stu)
struct stu
{
int num;
int sco;
struct stu *next;
};
int n=0;
struct stu* creat(void)
{
struct stu *p1,*p2,*head;
p1=p2=(struct stu*)malloc(L);
scanf("%d,%d",&p1->num,&p1->sco);
head=NULL;
while(p1->num!=0)
{
n++;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct stu*)malloc(L);
scanf("%d,%d",&p1->num,&p1->sco);
}
p2->next=NULL;
return(head);
}
void print(struct stu *head)
{ struct stu *p1;int n=0;
p1=head;
if(head==NULL)printf("It's NULL!\n");
else
printf("num sco\n");
while(p1!=NULL)
{ printf("%d %d\n",p1->num,p1->sco);
p1=p1->next;
n++;
}
}
void main()
{ int n;
struct stu *p1,*p2,*p3,*q0,*q1=NULL,*q2=NULL;
q1=creat();
printf("input ag:\n");
q2=creat();
print(q1);
printf("\n");
print(q2);
}
我的目的是输入两个链表,再依次输出,可是为什么第二个链表显示"空"呢.莫非函数要初始化吗? 提前谢谢了 展开
#include<stdlib.h>
#define L sizeof(struct stu)
struct stu
{
int num;
int sco;
struct stu *next;
};
int n=0;
struct stu* creat(void)
{
struct stu *p1,*p2,*head;
p1=p2=(struct stu*)malloc(L);
scanf("%d,%d",&p1->num,&p1->sco);
head=NULL;
while(p1->num!=0)
{
n++;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct stu*)malloc(L);
scanf("%d,%d",&p1->num,&p1->sco);
}
p2->next=NULL;
return(head);
}
void print(struct stu *head)
{ struct stu *p1;int n=0;
p1=head;
if(head==NULL)printf("It's NULL!\n");
else
printf("num sco\n");
while(p1!=NULL)
{ printf("%d %d\n",p1->num,p1->sco);
p1=p1->next;
n++;
}
}
void main()
{ int n;
struct stu *p1,*p2,*p3,*q0,*q1=NULL,*q2=NULL;
q1=creat();
printf("input ag:\n");
q2=creat();
print(q1);
printf("\n");
print(q2);
}
我的目的是输入两个链表,再依次输出,可是为什么第二个链表显示"空"呢.莫非函数要初始化吗? 提前谢谢了 展开
1个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#define L sizeof(struct stu)
struct stu
{
int num;
int sco;
struct stu *next;
};
struct stu* creat(void)
{
int n=0;
struct stu *p1,*p2,*head;
p1=p2=(struct stu*)malloc(L);
scanf("%d,%d",&p1->num,&p1->sco);
head=NULL;
while(p1->num!=0)
{
n++;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct stu*)malloc(L);
scanf("%d,%d",&p1->num,&p1->sco);
}
p2->next=NULL;
return(head);
}
void print(struct stu *head)
{ struct stu *p1;int n=0;
p1=head;
if(head==NULL)printf("It's NULL!\n");
else
printf("num sco\n");
while(p1!=NULL)
{ printf("%d %d\n",p1->num,p1->sco);
p1=p1->next;
n++;
}
}
void main()
{ int n;
struct stu *p1,*p2,*p3,*q0,*q1=NULL,*q2=NULL;
q1=creat();
printf("input ag:\n");
q2=creat();
print(q1);
printf("\n");
print(q2);
}
楼主,你把n设置成了全局变量,所以当q1出来的时候,n的值就不再是0了,所以应该把int n=0这句话放在creat()这个函数里,这样问题就解决了
#include<stdlib.h>
#define L sizeof(struct stu)
struct stu
{
int num;
int sco;
struct stu *next;
};
struct stu* creat(void)
{
int n=0;
struct stu *p1,*p2,*head;
p1=p2=(struct stu*)malloc(L);
scanf("%d,%d",&p1->num,&p1->sco);
head=NULL;
while(p1->num!=0)
{
n++;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct stu*)malloc(L);
scanf("%d,%d",&p1->num,&p1->sco);
}
p2->next=NULL;
return(head);
}
void print(struct stu *head)
{ struct stu *p1;int n=0;
p1=head;
if(head==NULL)printf("It's NULL!\n");
else
printf("num sco\n");
while(p1!=NULL)
{ printf("%d %d\n",p1->num,p1->sco);
p1=p1->next;
n++;
}
}
void main()
{ int n;
struct stu *p1,*p2,*p3,*q0,*q1=NULL,*q2=NULL;
q1=creat();
printf("input ag:\n");
q2=creat();
print(q1);
printf("\n");
print(q2);
}
楼主,你把n设置成了全局变量,所以当q1出来的时候,n的值就不再是0了,所以应该把int n=0这句话放在creat()这个函数里,这样问题就解决了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询