有以下结构体说明和变量定义,如图所示,指针p、 q、 r分别指向一个链表中的三个连续结点。 struct node int data; struct node *next; } *p, *q, *r; 现要将q

admin2009-01-15  24

问题 有以下结构体说明和变量定义,如图所示,指针p、 q、 r分别指向一个链表中的三个连续结点。   struct  node      int data;      struct  node   *next;    }  *p,  *q,  
*r; 现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序是

选项 A、r->next=q; q->next=r->next; p->next=r;
B、q->next=r->next; p->next=r; r->next=q;
C、p->next=r; q->next=r->next; r->next=q;
D、q->next=r->next; r->next=q; p->next=r;

答案1

解析 题目中要求将q和r所指结点的先后位置交换,即要求p所指结点的指针域指向r所指向的结点,r所指向的结点的指针域指向q所指向的结点,q所指向的结点的指针域指向 r所指向的结点。选项A首先让r所指向的指针的指针域指向q所指向的结点,这样就将r所指向的结点的指针域指向的结点丢失了,故选项A错误。选项 B首先q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,然后,让p所指向结点的指针域指向r所指向的结点,最后让r所指向的结点的指针域指向q所指向的结点,满足要求,故选项B正确。选项C首先让p所指向结点的指针域指向r所指向的结点,然后让q所指向的结点的指针域指向r所指向的结点的指针城所指向的结点,最后让r所指向的结点的指针域指向q所指向的结点,满足要求,故选项C正确.选项D首先让q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,然后,让,所指向的结点的指针城指向q所指向的结点让,最后让P所指向结点的指针城指向r所指向的结点,满足要求,故选项D正确;所以,4个选项中选项A符合题意。
转载请注明原文地址:https://kaotiyun.com/show/wKHp777K
0

最新回复(0)