下面程序的功能是建立一个有3个结点的单循环链表,然后求各个结点数值域data中数据的和,请填空。 #include <stdio.h> #include <stdlib.h> struct NODE { int data;

admin2009-01-15  29

问题 下面程序的功能是建立一个有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 【  】;
      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的倍数都可以。
转载请注明原文地址:https://kaotiyun.com/show/GQXp777K
0

最新回复(0)