问题 填空题

下面程序的功能是建立一个有3个结点的单循环链表,然后求各个结点数值域data中数据的和,请填空。


#include <stdio.h>
#include <stdlib.h>
struct NODE int data;
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->data=100; q->data=200; r->data=300;
p->next=q; q->next=r; r->next=p;
sum=p->data+p->next->data+r->next->next 【19】 ;
printf("%d\n",sum);

答案

参考答案:->next->data

解析: 主函数中前面大部分语句都是用来建立题中所述的链表的,我们只需要补充完整倒数第2条语句,实现题目要求的求3个结点之和就可以了。p->data是p所指结点中的数据;p->next->data是p的下一结点(q所指结点)中的数据。所以下划线位置只要填入->next->data就是剩下的r所指结点的数据了。因为链表是循环的,r->next->next->next的值就等于r,你甚至还可以填入->next->next->next->next->data,只要保证整个式子->next的个数是3的倍数都可以。

连词成句
多项选择题