A-A+
以下程序运行后的输出结果是______。 struct NODE { int hum; st
问题详情
以下程序运行后的输出结果是______。 struct NODE { int hum; struct NODE *next; }; main () { struct NODE s[3]={{1, },{2, },{3, }},*p,*q,*r; int sum=0: s[0].next=s+1; s[1].next=s+2; s[2].next=s: p=s; q=p->next; r=q->next; sum+=q->nexs->num; sum+=r >next->next->num: prlntf("%dn",sum ; }
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:5
主函数首先声明了一个结点数组s[3],并分别初始化其成员num为1,2、3,而成员next全部被初始化为"\0",也就是0。下面又用三条语句s[0].next=s+1;s[1].next=s+2;s[2].next=s;分别将三个结点指向其后面一个结点,而最后一个结点指向笫1个结点,构造出一条单向循环链表。接下来用结点指针p=s即让其指向s[0],然后让q=p->next,即指向了s[1],r=-q->next即让r指向s[2],然后让一个累计变量sam累加q->next->hum和r->next->next->num,因为q指向s[1)所以它的next指针指向的是s[2],故第1次累加的是s[2].num=3,而r指向的是s[2]所以它的next是s[0],s[0]的next指向s[1],故笫2次累加的是s[1].num=2。所以程序最终输出结果为5。