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

admin2009-02-15  14

问题 以下程序运行后的输出结果是【 】。
struct  NODE
   {int num;struct 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[0].next=s+1;s[1].next=s+2;s[2].next=s;”将结构体变量s中各结点链接成了一个循环链表,即最后一个结点的指针域指向了头结点(s[2].next=s;),整个链表形成一个环,并通过语句“p=s;q=p->next;r=q->next;”将结构体指针变量p、q、r指向了各结点,具体结构如下图:

故本题输出的sum=3+2=5。
转载请注明原文地址:https://jikaoti.com/ti/x4K0FFFM
0

最新回复(0)