48、有以下程序 #include <stdlib.h> struct NODE { int num; struct NODE *next; }; main( ) { struct NO

答案为什么为B。。。。麻烦说明详细过程
48、有以下程序
#include <stdlib.h>
struct NODE {
int num;
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->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL;
sum+=q->next->num;sum+=p->num;
printf("%d\n",sum); }
执行后的输出结果是 ( B )
A)3 B)4 C)5 D)6

这是链表问题,首先在内存中开辟了3个空间,分别把地址放在指针变量p,q,r中
然后分别对结构体元素赋值p->num=1;q->num=2;r->num=3;
当程序执行到
sum+=q->next->num;
相当与sum=sum+(q->next->num)即sum=0+3
的时候,因为sum开始初始为0,所以执行上面语句后sum的值变成3了
sum+=p->num;
相当与sum=sum+(p->m),即sum=3+1
于是sum=4
希望对你有帮助
温馨提示:内容为网友见解,仅供参考
无其他回答

...#include<stdlib.h> typedef struct Node { int num; int pasword...
include<stdlib.h> typedef struct Node { int num;int pasword;struct Node *next;}LinkList;LinkList *creat(int n){ LinkList *p,*q,*head;int i=1;head=p=(LinkList *)malloc(sizeof(LinkList));p->num=i;printf("请输入第1个人的密码:");scanf("%d",&p->pasword);for(i=2...

...#include"stdlib.h" typedef struct node { int data; struct node...
typedef struct node {int data;struct node *next;}listnode;listnode *creat();void output(listnode *L);void insert(listnode *L,int i,int e);int delet(listnode *L,int e);main(){int k,i,e;listnode*L;do { printf("\\n");printf("\\n ===") ;printf("\\n | 1.cre...

...#include <stdlib.h> typedef struct s { int data; struct s *...
include <stdlib.h> \/\/调用头文件 typedef struct s \/\/声明一个s结构体(s为该结构体的名称){ int data; \/\/声明结构体的成员 该成员是一个整形变量 struct s *next; \/\/声明结构体的成员,该成员是另外一个结构体 }NODE; \/\/声明结构体s的另外一个名称为NODE void fun \/...

...#include<stdlib.h> typedef struct LNode { int data; struct LNod...
int main(){ LNode lnode;L ee=malloc(sizeof(LNode));lnode.data = 4;ee->data = 2;printf("%d\\n",lnode.data);printf("%d\\n",ee->data);return 0;}

有一堆人排成一圈,喊到一个数就出局,最后剩下的人,用c语言用动态链表编 ...
链表程序如下:include <stdio.h>#include<stdlib.h>struct node{int num;struct node *next;};struct node *create(int n){int i;struct node *p,*head=NULL,*rear;for(i=0;i<n;i++){p=(struct node *)malloc(sizeof(struct node));p->num=i+1;if(head==NULL){head=p;rear=p;...

...struct node{ int data ; struct node *next ; }Node,*link ; 这 ...
typedef把Node定义成struct node类型,把link定义成指向这个结构体的指针类型,两者都是类型名,所以可以这样声明:Node mynode;\/\/mynode是一个struct node结构体 link ptr_node;\/\/ptr_node是一个指向struct node结构体的指针。

设计一个计算单链表(链表带头结点)中结点个数的算法,并依此输出链表中的...
include<stdio.h> include<stdlib.h> typedef struct node { int data;struct node *next;}node;void count(node* l)\/\/计算节点个数,输出所有值 { int n = 0;node* p = l->next;while(p){ printf("%d ",p->data);p = p->next;n++;} printf("\\n%d\\n",n);} int main(){...

有一线性表存储在一个带头结点的循环单链表L中,写出计算线性表元素个数...
include<stdio.h> include<stdlib.h> typedef struct node{ int data;struct node *next;}listnode,*linklist;linklist creatlist(int n,linklist R){ listnode *p,*q;int i;R=q=(listnode*)malloc(sizeof(listnode));for(i=1;i<n;i++){ p=(listnode*)malloc(sizeof(listnode));q->...

2. 已有a,b两个链表,每个链表中的结点包括学号,成绩.要求把两个链表合并...
include <stdio.h> include <stdlib.h> struct node { int num;int score;struct node * next;};int main(){ int n, m, i;struct node *heada, *taila, *headb, *tailb, *head, *tail, *p;heada = taila = headb = tailb = NULL;printf("Please input n m:[1-100]\\n")...

...其中每个结点由一个整数域 data和指针域next组成,……
include <stdio.h> include <stdlib.h> include <malloc.h> typedef struct node { int data;struct node *next;}Node;void InitList(Node **head);void CreateList(Node **head);void InsertList(Node **head, int key);void DeleteList(Node **head, int key);void PrintList(Node **...

相似回答