若以下定义: struct link { int data; struct link *next; }a,b,C,*p,*q; 且变量a和b之间已有下图所示的链表结构。 指针p指向

admin2010-03-29  36

问题 若以下定义:     struct  link    {       int  data;       struct  link  *next;    }a,b,C,*p,*q;    且变量a和b之间已有下图所示的链表结构。
        
指针p指向变量a,q指向变量c,则能够把c插入到a和b之间并形成新的链表的语句组是(    )。

选项 A、a.next=c;c.next=b;
B、p.next=q;q.next=p.next;
C、q->next=p->next;p->next=&c;
D、(*p).next=c;(*q).next=b;

答案4

解析 本题考核结构型指针的应用。当指针所指向的变量的类型为结构类型时,这个指针就是结构指针。题中定义了p和q为结构指针。当访问由指针所指向的结构的元素时,用箭头“->”运算符实现这个操作。分析各选项:
   选项A中,语句“a.next=c;c.next=b;”的赋值有问题,因为结构成员next为结构型指针,而变量c和b只是结构变量,不是地址值,所以达不到题目要求。
   选项B中,执行语句“p.next=q;q.next=p.next;”后,只是把a点和c点双向连接起来了,并不能把c插入到a和b之间,形成新的链表。
   选项C中,先让c的后趋节点指向a的后趋节点b,再使a的后趋节点指向c。
   这样就完成了把c插入到a和b并形成新的链表的功能。所以选项C中的语句可完成题目所属功能。
   选项D中,(*p).next与(*q).next都是指针型变量,而赋值语句的右值c和b只是结构型变量,所以此语句不能达到题目要求的目的。
转载请注明原文地址:https://jikaoti.com/ti/4iW0FFFM
0

最新回复(0)