现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。 struct node {har data; struct node*next;}*p,*q,*r; 现要将q和r所指结点交换前后位

admin2013-06-11  46

问题 现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。

    struct node
    {har data;
    struct node*next;}*p,*q,*r;
    现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是(    )。

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

答案D

解析 由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,p指向r结点,r指向q结点即可。而在选项D中,r->next=q,这时r指向的节点为q;p->next=r,这时p指向的节点为r;q->next=r->next。因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。
转载请注明原文地址:https://jikaoti.com/ti/ecn0FFFM
0

最新回复(0)