钢丝绳卡头执行标准:C语言问题9

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 02:22:26
#include <stdlib.h>
struct NODE{
int num;
struct NODE *next;
};
main( )
{ struct NODE *p,*q,*r;
int sum=0;
p=(struct NODE *)malloc(sizeof(struct NODE));
q=(struct NODE *)malloc(sizeof(struct NODE));
r=(struct NODE *)malloc(sizeof(struct NODE));
p->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL;
sum+=q->next->num;sum+=p->num;
printf(“%d\n”,sum);
}
执行后的输出结果是
A) 3 B) 4 C) 5 D) 6
能详细的解释下为什么吗?

struct NODE定义了一个结构类型
struct NODE *p,*q,*r;
p=(struct NODE *)malloc(sizeof(struct NODE));
q=(struct NODE *)malloc(sizeof(struct NODE));
r=(struct NODE *)malloc(sizeof(struct NODE));
把3个指针分配3个实体存储空间 // 意思就是这样了,专业名词忘了。。嘿嘿

然后p(1,q)->q(2,r)->r(3,NULL)构成一个链表
sum一开始为0 ,现在sum+=q->next->num;
也就是sum = sum + r->num = 0 + 3 =3
sum+=p->num;
也就是sum = sum +p->num= 3 + 1=4
所以最后答案为B。
PS:q->next 等同与r ,所以q->next->num = r->num