有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中的三个连续结点。
struct node
{ int data;
struct node *next;
}*p,*q,*r;
data next data next data 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;