假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是 ( )A.free(q);p->Next=q->next;B.(* p).next=(* q).nexy;free(q);C.q=(* q).next;(* p).next=q;free(q);D.q=q->next;p->next=q;p=p->next;free(p);

题目

假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是 ( )

A.free(q);p->Next=q->next;

B.(* p).next=(* q).nexy;free(q);

C.q=(* q).next;(* p).next=q;free(q);

D.q=q->next;p->next=q;p=p->next;free(p);


相似考题
更多“ 假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是 ( )A.free(q);p->Next=q->next;B.(* p).next=(* q).”相关问题
  • 第1题:

    在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,现要删除第一个结点,且p、q仍然分别指向新表中第一个结点和尾结点。可用的语句是p=p->next;和( )。

    A、q=p

    B、q->next=p

    C、p=q->next

    D、p->next=q


    标准答案:B

  • 第2题:

    要在一个单向链表中删除p所指向的结点,已知q指向p所指结点的直接前驱结点,若链表中结点的指针域为next,则可执行q->next= p->next。()

    此题为判断题(对,错)。


    标准答案:对

  • 第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
    解析:“r->next=q;”表示r的下一个结点为qo“q->next=->next;”则表示q的下一个结点是r的下一个结点,即q结点本身,因此与后续结点便断开了联系。

  • 第4题:

    有以下结构体说明和变量定义,如图所示: 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不能做到。

  • 第5题:

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

  • 第6题:

    在一个单链表中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行下面哪条语句?( )

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

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

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

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


    正确答案:D
    解析:在一个单链表中插入一个元素,首先要生成一个指针p指向的结点,选项D中的第一条语句让插入位置之后的元素称为其后继结点,后一条语句使p称为q的后继结点,同时断开之前p的后继结点与p的联系。

  • 第7题:

    有以下结构说明和变量定义,指针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所指结点相连。

  • 第8题:

    有以下结构体说明和变量定义,如图所示: 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所指结点相连。

  • 第9题:

    设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为()。

    A.q=p->next;p->data=q->data;p->next=q->next;free(q);
    B.q=p->next;p->data=q->data;free(q);
    C.q=p->next;p->next=q->next;free(q);
    D.q=p->next;q->data=p->data;p->next=q->next;free(q);

    答案:A
    解析:
    应先使指针q指向结点A之后的结点,以防链表断裂,然后删除结点q,最后将删除的结点q的存储空间释放。

  • 第10题:

    在一个单链表中,己知指针q所指向的结点是指针P所指向的结点的前趋结点,若在指针q和p所指向的两个结点之间插入指针s指向的结点,则执行()

    • A、 p->next=s;s->next=q
    • B、 q->next=s;s->next=p
    • C、 S->next=p->next;p->next=s
    • D、 p->next=s->next;s->next=q

    正确答案:B

  • 第11题:

    单选题
    在一个单链表中,己知指针q所指向的结点是指针P所指向的结点的前趋结点,若在指针q和p所指向的两个结点之间插入指针s指向的结点,则执行()
    A

     p->next=s;s->next=q

    B

     q->next=s;s->next=p

    C

     S->next=p->next;p->next=s

    D

     p->next=s->next;s->next=q


    正确答案: B
    解析: 暂无解析

  • 第12题:

    单选题
    己知指针p指向单链表中的某结点,则下列各组语句能删除链表中结点的是()
    A

    p=p->next

    B

    q=p->next;q=q->next

    C

    p->next = p->next->next

    D

    q=p->next;p=p->next;q=p->next


    正确答案: A
    解析: 暂无解析

  • 第13题:

    在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句( )。

    A、p->next=q->next

    B、q->next=NULL

    C、p->next=q

    D、p=q->next


    标准答案:A

  • 第14题:

    已知指针p和q分别指向某单链表中第一个结点和最后一个结点。假设指针x指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为()。

    A、q->next=x->next;x->next=p;

    B、s->next=p;q->next=x->next;

    C、p->next=x->next;x->next=p;

    D、x->next=q;p->next=x->next;


    参考答案:A

  • 第15题:

    假定已建立以下链表结构,且指针p和q已指向如图所示的结点:

    则以下选项中司将q所指结点从链表中删除并释放该结点的语句组是______。

    A.(*p).next=(*q).next; free(p);

    B.p=q->next; free(q);

    C.p=q; free(q);

    D.p->next=q->next; free(q);


    正确答案:D
    解析:本题题面要求删除q所指结点并释放该结点,而选项A中虽然是删除了q所指鲒点,但并未释放q这个结点,而释放的是p结点,所以选项A错误;选项B是将q的下一结点的地址赋值给指针变量p,这意味着p原来的成员变量内容被q的下一结点的成员变量内容所代替,即原p结点也被删除了,所以选项B错误;选项C相当于将q的所有成员变量内容代替了p的所有成员变量内容,即p结点被删除,所以错误;选项D是将q的下—结点的地址赋值给p的成员next (成员next用于存放一结点的地址),使得p的next成员不再指向q,而是指向q的下一结点,相当于删除了q这个结点,同叫用free函数正确释放了q这一结点,所以选项D正确。

  • 第16题:

    假定已建立以下链表结构,且指针P和q已指向如下图所示的结点:

    则下列选项中可将q所指点从链表中删除并释放该结点的语句组是( )。

    A.(*p).next=(*q).next;free(p);

    B.p=q->next;flee(q);

    C.p=q;free(q);

    D.p->next=q->next;free(q);


    正确答案:D
    D。【解析】在以下4项中,根据链表插入与删除的原则,选项A中,*P是P所指向的元素.所以这样调用是错误的;选项B是将P指向的结点作为q的后继结点;而选项C则是将指针q指向P指向的结点;选项D将指向q的后继点的指针赋给指向P后继点的指针,并将q指向结点所占的内存。所以选项D正确。

  • 第17题:

    假定已建立以下链表结构,且指针P和q已指向如图所示的结点:

    则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是( )。

    A.p一>next=q一>next;flee(q);

    B.p=q一>next;free(q);

    C.p=q;free(q);

    D.(*p).next=(幸q).next;ffee(p);


    正确答案:A
    本题考查删除链表中的结点操作,其方法是将要删除结点的上个结点的下个结点指向要删除结点的下个结点,然后释放该要删除结点,所以选项A正确。

  • 第18题:

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

  • 第19题:

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

  • 第20题:

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

    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)不对。

  • 第21题:

    己知指针p指向单链表中的某结点,则下列各组语句能删除链表中结点的是()

    • A、p=p->next
    • B、q=p->next;q=q->next
    • C、p->next = p->next->next
    • D、q=p->next;p=p->next;q=p->next

    正确答案:C

  • 第22题:

    在一个头指针为ph的单链表中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()操作。

    • A、p->next=q->next;q=p
    • B、p->next=q->next;q->next=p
    • C、q->next=p->next;p->next=q
    • D、q->next=p->next;p->next=q->next

    正确答案:B

  • 第23题:

    单选题
    在一个头指针为ph的单链表中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()操作。
    A

    p->next=q->next;q=p

    B

    p->next=q->next;q->next=p

    C

    q->next=p->next;p->next=q

    D

    q->next=p->next;p->next=q->next


    正确答案: D
    解析: 若要在指针q所指结点的后面插入一个由指针p所指向的结点,应将结点p的链域p->next指向结点q的后继结点(q->next);将结点q的链域q->next改为指向结点po相应的操作为p->next=q->next:q->next=p。