以下程序运行后的输出结果是______。
struct NODE
int hum;
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->nexs->num;
sum+=r >next->next->num:
prlntf("%d\n",sum ;
参考答案:E
解析: 主函数首先声明了一个结点数组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。