有以下结构体说明和变量定义,如图所示: struct node {int data;struct node *next;} *p,*q,*r,现妥将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。A.P->next=q->next;B.p->next=(p->next->next;C.p->next=rD.p=q->next;

题目

有以下结构体说明和变量定义,如图所示: struct node {int data;struct node *next;} *p,*q,*r,

现妥将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。

A.P->next=q->next;

B.p->next=(p->next->next;

C.p->next=r

D.p=q->next;


相似考题
参考答案和解析
正确答案:D
解析:要想将q所指结点从链表中删除,同时保持链表的连续,必需使p结点的next指向r,在四个选项中,只有选项 D不能做到。
更多“ 有以下结构体说明和变量定义,如图所示: struct node {int data;struct node *next;} *p,*q,*r,现妥将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操”相关问题
  • 第1题:

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

  • 第2题:

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

  • 第3题:

    有以下结构体说明和变量定义,相应的链表如图所示:

    struet node { int data; struet node * next; *p,*q,*r;现将q所指结点多链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是( )。

    A.p- >next=q->next;

    B.p->next=p->next->next;

    C.p->next=r;

    D.p=q->next


    正确答案:D
    解析:本题定义了结构体类型的指针变量p,q,r,并各自有两个成员变量data和next,data用于存放数据,next用于存放下一个结点的地址,所以,要想将q所指结点从链表中删除,同时保持链表的连续,必须使P结点的next指向r,选项D)不对。

  • 第4题:

    有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。 struct node { int data;struct node*next;)*p,*q,*r; 现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是( )。

    A.p->next=q->next;

    B.P-next=P->next->next;

    C.p->next=r;

    D.p=q->next;


    正确答案:D
    本题考查链表结点的删除,q一>next中存放的是r所指结点的首地址,将r所指结点的首地址存于p--next中,则实现删除q所指点的功能,并保持链表连续,P所指点与r所指结点相连。

  • 第5题:

    有以下结构体说明和变量定义,如图所示: struet node {int data; struct node*next;}*p,*q,*r;

    现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是

    A.p->next=q->next;

    B.p->next=p->next->next;

    C.p->next=r;

    D.p=q->next;


    正确答案:D
    解析:本题考查链表结点的删除。q->next中存放的是r所指结点的首地址,将r所指结点的首地址存于p->next中,则实现删除q所指结点的功能,并保持链表连续,p所指结点与r所指结点相连。