现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。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.qnext=q;p->next=r;q->next=r->next;

题目

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

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.qnext=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不正确。
更多“ 现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。A.q->next=r->next;p->next=r;r——>next=q;B.Q->nex”相关问题
  • 第1题:

    现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向—个链表中连续的三个结点。 street 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
    解析:选项D中首先将q赋给r->next,也就是将结点q的地址存放在结点r的指针域中;接着将r赋给p->next,也就是将结点r的地址存放在结点p的指针域中,此时完成了q和r所指结点的交换。q->next=r->next的目的是想将q的指针域指向下—个结点的数据地址,但由于—开始执行了r->next=q,即已将r的指针域中存放了q结点的地址,所以再做操作“q->next=r->next”就相当于将q指向了其本身,也就是和下—个结点断开了,所以选项D操作错误。

  • 第2题:

    现有以下结构体说明和变量定义,如图所示,指针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
    解析:选项D)中首先将q赋给r->next,也就是将结点q的地址存放在结点r的指针域中;接着将r赋给p->next,也就是将结点r的地址存放在结点p的指针域中,此时完成了q和r所指结点的交换。q->next=r->next的目的是想将q的指针域指向下一个结点的数据地址,但由于一开始执行了r->next=q,即已将r的指针域甲存放了q结点的地址,此时q-next=r->next就相当于将q指向了其本身,也就是和下一个结点断开了,所以选项D)错误。

  • 第3题:

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

    struct node

    {har data;

    struct node*next;)*P,*q,*r;

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

    A.q-:>next=r->next;p--:>next=r;rm:>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不正确。

  • 第4题:

    现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。struct node {bar 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
    由题目ee线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,p指向r结点,r指向q结点即可。而在选项D由,r->next=q,这时r指向的节点为q;p->nextr,这时p指向的节点为r;q->next=r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。

  • 第5题:

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

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


    正确答案:A
    解析:题目中要求将q和r所指结点的先后位置交换,即要求p所指结点的指针域指向r所指向的结点,r所指向的结点的指针域指向q所指向的结点,q所指向的结点的指针域指向r所指向的结点。选项A首先让r所指向的指针的指针域指向q所指向的结点,这样就将r所指向的结点的指针域指向的结点丢失了,故选项A错误。选项B首先q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,然后,让p所指向结点的指针域指向r所指向的结点,最后让r所指向的结点的指针域指向q所指向的结点,满足要求,故选项B正确。选项C首先让p所指向结点的指针域指向r所指向的结点,然后让q所指向的结点的指针域指向r所指向的结点的指针城所指向的结点,最后让r所指向的结点的指针域指向q所指向的结点,满足要求,故选项C正确.选项D首先让q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,然后,让,所指向的结点的指针城指向q所指向的结点让,最后让P所指向结点的指针城指向r所指向的结点,满足要求,故选项D正确;所以,4个选项中选项A符合题意。