问题 单项选择题

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

D.q->next=r->next;r->next=q;p->next=r;

答案

参考答案:A

解析: 对于选项A),执行r->next=q后,r->next指向了q。此时q->next=r-> next就相当于q->next=q;所以q的下一个结点指向了自己,而不是指向原来r的下一个结点,所以选项A)错误。

问答题 简答题
单项选择题