问题 单项选择题

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

答案

参考答案:D

解析: 本题考查的是指针的应用。解本题的关键是理解题目中的要求“将q和r所指结点交换前后位置,同时要保持链表的连续”。我们不妨先想想交换后的样子,应该如下例:
data next data next data next
…→A→C→B→…
↑p↑r↑q
然后比较一下交换前的样子,我们会发现,其中需要改变的指针只有3个。

多项选择题
多项选择题