问题 填空题

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

#include <stdio.h>#include <stdlib.h>struct NODE{ int data; struct NODE*next; };main(){ structNODE *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

解析:知识点:指针处理链表评析:自定义结构体类型名为Node,并定义指向结点类型的指针*p,*q,*r。它们共有两个成员:成员data是整型,成员 next是指针类型,题目要求求结点数值域的和,也就是求p->data+q->data+r->data的值,p->data表示取p所指结点的值, p->next->data表示取q指针所指结点中的值,现在p所指结点和q所指结点的值已经取到,就差r所指结点中的值,题目中已知r->next指向的是p->data,如果想得到r指针所指结点的值需要将最后的指针指向r->data,所以答案为 ->next->data。

单项选择题 B型题
单项选择题