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