假定已建立以下链表结构,且指针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);

题目

假定已建立以下链表结构,且指针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正确。
更多“ 假定已建立以下链表结构,且指针p和q已指向如图所示的结点:则以下选项中司将q所指结点从链表中删除并释放该结点的语句组是______。A.(*p).next=(*q).next; free(p);B.p=q->ne”相关问题
  • 第1题:

    假定建立了以下链表结构,指针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);


    正确答案:B

  • 第2题:

    1、在一个不带头结点的单链表中,若要删除 p 所指结点的后继结点q,则执行()。

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

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

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

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


    p=L;L=L->next;free(p);

  • 第3题:

    在一个不带头结点的单链表中,若要删除 p 所指结点的后继结点q,则执行()。

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

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

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

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


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

  • 第4题:

    若已建立一个链表,指针p指向尾结点,指针q指向新结点,则能将q所指的结点链接到链表末尾的 一组语句为________。

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

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

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

    D.p=(*p)·next;(*q)·next=(*p)·next;(*p)·next=q;


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

  • 第5题:

    假设p指向链表中的第一个结点,q指向第二个结点,可以将q指向的结点删除并释放的语句是?

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

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

    C.p=q; delete q;

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


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