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

admin2009-04-15  38

问题 有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中的3个连续结点。    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->neaxt;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所指向结点的指针域所指向的结点,然后,让r所指向结点的指针域指向q所指向的结点,最后让p所指向结点的指针域指向r所指向的结点,满足要求,故选项D正确。所以,4个选项中选项A符合题意。
转载请注明原文地址:https://jikaoti.com/ti/j7K0FFFM
0

最新回复(0)