以下程序运行后的输出结果是【 】。 struct NODE { int num; stmct NODE *next; }; main() {struct NODE s[3]={{1,’\0’),{2,’\

admin2009-01-15  31

问题 以下程序运行后的输出结果是【  】。
   struct NODE
   {
     int num;
     stmct NODE *next;
   };
   main()
   {struct NODE s[3]={{1,’\0’),{2,’\0’),{3,’\0’}),*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->next->num;
     sum+=r->next->next->num;
     printf("%d\n",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],然后让一个累计变量sum累加q->next->num和r->next->next->nm,因为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。
转载请注明原文地址:https://kaotiyun.com/show/udHp777K
0

相关试题推荐
最新回复(0)