c语言,链表,指针方面的问题
#include<stdio.h>#include<malloc.h>#defineLENsizeof(structperson)#defineNULL0structpe...
#include <stdio.h>
#include <malloc.h>
#define LEN sizeof(struct person)
#define NULL 0
struct person
{
int num;
int count;
struct person * next;
};
void main()
{
struct person *head,*p1,*p2;
struct person *p;
int n=0;
p1=p2=(struct person *) malloc(LEN );
scanf("%d,%d",&p1->num,&p1->count);
head=NULL;
while(p1->num!=0)
{
n++;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct person *)malloc(LEN );
scanf("%d,%d",&p1->num,&p1->count);
}
p2->next=NULL;
for(p=head;p<=head+n;p++)
{printf("%d,%d\n",p->num,p->count);}
getch();
}
以上是题目,
我的输入是
2,3
4,6
0,0
为什么输出却是
2,3
-33686019,-1414812757
0,0
分不多了,还望大神不吝赐教 展开
#include <malloc.h>
#define LEN sizeof(struct person)
#define NULL 0
struct person
{
int num;
int count;
struct person * next;
};
void main()
{
struct person *head,*p1,*p2;
struct person *p;
int n=0;
p1=p2=(struct person *) malloc(LEN );
scanf("%d,%d",&p1->num,&p1->count);
head=NULL;
while(p1->num!=0)
{
n++;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct person *)malloc(LEN );
scanf("%d,%d",&p1->num,&p1->count);
}
p2->next=NULL;
for(p=head;p<=head+n;p++)
{printf("%d,%d\n",p->num,p->count);}
getch();
}
以上是题目,
我的输入是
2,3
4,6
0,0
为什么输出却是
2,3
-33686019,-1414812757
0,0
分不多了,还望大神不吝赐教 展开
3个回答
展开全部
问题出在这里:for(p=head;p<=head+n;p++),链表的地址是不连续的,你不能用p++来得到next的地址,一般输出链表要p=p->next来找到下一个结构体地址。另外,你多输出了一个数值是因为你的n值不符合,应该是小于而不是小于或等于。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询