[单选题]

有以下结构体说明和变量定义,如图所示,指针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;

参考答案与解析: