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

题目

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


相似考题
更多“有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。 struct node { int data;stru ”相关问题
  • 第1题:

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


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

  • 第2题:

    有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。 struct node { int data; struct node*next; }*p,*q,*r;

    现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是 ______。

    A.q->next=r->next;r->next=q;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.r->next=q;q->next=r->next;p->next=r;


    正确答案:D

  • 第3题:

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

  • 第4题:

    有以下结构体说明和变量定义,如图所示,指针p、q、r,分别指向此链表中的3个连续结点。 Struct node { int data; Struct node *hext; } *p,*q,

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

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

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

    C.p->next=r;

    D.p=q->next;


    正确答案:D
    解析:要删除链表中间的某个结点,只需要使它的前一个结点的next指针指向它的后一个结点-不过,严格来讲还需要使用free()函数释放掉该结点在内存中所占的空间。本题要删除的是q所指结点(以下简称q结点),只需使p结点的next指针指向r结点即可。选项A中,因为Q结点的next指向r结点,所以执行p->next=q->next;语句后p结点的next就指向了r结点,故选项A能完成删除。选项B中,p->next->next等价于q->next,因此也能完成删除。选项C直接让p->next指向r结点,当然可以删除。选项D使指针p指向q->next(即r结点),这样做不会影响到内存中的链表,所以应该选择D。

  • 第5题:

    有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中的3个连续结点。 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->neaxt;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所指向结点的指针域所指向的结点,然后,让r所指向结点的指针域指向q所指向的结点,最后让p所指向结点的指针域指向r所指向的结点,满足要求,故选项D正确。所以,4个选项中选项A符合题意。