问题
单项选择题
有以下结构体说明和变量定义,如下图所示,指针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=p;
D.q->next=r->next;r->next=q;p->next=r;
答案
参考答案:A
解析: 对于选项A),执行r->next=q后,r->next指向了q。此时q->next=r-> next就相当于q->next=q;所以q的下一个结点指向了自己,而不是指向原来r的下一个结点,所以选项A)错误。