单项选择题

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


现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是()。

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