程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q、均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。该程序段实现的功能是( )。A.首结点成为尾结点B.尾结点成为首结点C.删除首结点D.删除尾结点

题目

程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q、均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

该程序段实现的功能是( )。

A.首结点成为尾结点

B.尾结点成为首结点

C.删除首结点

D.删除尾结点


相似考题
参考答案和解析
正确答案:A
循环找到末尾结点,然后赋值给第一个结点,所以选择A)。
更多“程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q、均已正确定义,并用于指向链表 ”相关问题
  • 第1题:

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

  • 第2题:

    若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是______。

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

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

    C.s->next=NULL;p=p->next;p->next=S;

    D.p=(*p).next;(*S).next=(*p).next;(*p).next=s;


    正确答案:A
    解析:在答案A中:p=p->next;s->next=p;p->next=s;s的确已插到了链表的末尾,但它的next却并没有为NULL,而是指向了它的直接前趋p,这样它就不是一个单向链表(单向链表最后一个结点的next指针一定是一个NULL)。

  • 第3题:

    假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表中某个结点的指针,试编写算法在链表中删除指针s所指结点的前驱结点。 StatusListDelete_CL(LinkList &S) { LinkList p,q; if(S==S->next)return ERROR; q=S; p=S->next; while(){ q=p; p=p->next; } q->next=p->next; free(p); return OK; }

    A.p->next!=S

    B.p->next==S

    C.p!=S

    D.p==S


    1.p—>next!=s2.p=p—>next3.s(或p—>next) 1.p—>next!=s2.p=p—>next3.s(或p—>next)

  • 第4题:

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

    A.A

    B.B

    C.C

    D.D


    正确答案:A
    本题考查的是在链表中删除结点的操作。在本题中指针p指向结点a,q指向结点b。要把结点b删除,就应该首先让结点a的指针域指向结点C,即p—next=q—next,也可以写成(*p).next=(Pq).next,然后释放结点b,free(q):所以,4个选项中,只有A)满足题意。

  • 第5题:

    单向链表的链域为next,设指针p指向单向链表中的某个结点,指针S指向一个要插入链表的新结点,现要把s所指结点插入p所指结点之后,某学生采用以下语句:p->next==s;s->next==p->next;这样做正确吗?若正确则回答正确,若不正确则说明应如何改写。