niusouti.com
参考答案和解析
p->prior->next = p->next
更多“某双向链表中,结点结构为【prior,data,next】。那么删除p指针所指结点时,需要执行语句:p->next->prior=p->prior; ; free(p);”相关问题
  • 第1题:

    在双向循环链表中,在p指针所指的结点后插入q所指向的新结点,其修改指针的操作是()。

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

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

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

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


    参考答案:C

  • 第2题:

    在单链表中,指针p指向元素为x的结点,实现删除x节点的后继结点的语句是()。

    A、p=p->next;

    B、p->next=p->next->next;

    C、p->next=p;

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


    参考答案:D

  • 第3题:

    在双向循环链表中,在p所指的结点之后插入指针f所指的新结点,其操作步骤是()。

    A.f->prior=p;f->next=p->next;p->next=f;p->next->prior=f;

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

    C.f->prior=p;f->next=p->next;p->next->prior=f;p->next=f;

    D.p->next=f;p->next->prior=f;f->prior=p;f->next=p->next;


    参考答案:C

  • 第4题:

    设线性链表中结点的结构为(data,next)。若想删除结点p的直接后继,则应执行下列()操作。

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

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

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

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


    正确答案:A

  • 第5题:

    阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。

    【函数】

    void Locate( int &x)

    { <结点类型说明>

    * p =first -> next;

    while(p!=frist&&(1))P=P->next;

    if(p! =first) /*链表中存在x*/

    {(2);

    <结点类型说明>

    * current = P; /*从链表中摘下这个结点*/

    Current -> prior -> next = current -> next;

    Current -> next -> prior = current -> prior;

    P = current -> prior; /*寻找重新插入的位置*/

    While(p! =first &&(3))p=p->prior;

    Current-> next =(4); /*插入在P之后*?

    Current -> prior = P;

    P -> next -> prior = current;

    P->next=(5);

    }

    else printf("Sorry. Not find! \n"); /*没找到*/

    }


    正确答案:(1)p->data!=x (2)p->freq++ (3)current->freq>P->freq (4)p->next (5)current
    (1)p->data!=x (2)p->freq++ (3)current->freq>P->freq (4)p->next (5)current 解析:(1)空所在的循环是定位x,将指针指向x结点(如存在的话),因此(1)空应填写“p->data!=x”。显然,(2)空是使该结点的访问频度加1,因此(2)空应填写“p->freq++”。(3)空所在的循环是根据访问频度定位x结点的新位置,用P指向x结点的前驱,因此(3)空处应填“current->freq>P->freq”。
    (4)、(5)空之间的语句是将结点x插入在P之后。(4)空所在语句是将指针P指向x结点的前驱,因此(4)空应填写“p->next”。(5)空所在语句是将P后继指向结点current,因此空(5)处应填写“current”。

  • 第6题:

    在非空双向循环链表结点中,prior域指向该结点的直接前驱,next域指向直接后续,那么在q所指的结点后面插入p所指的结点的过程为______。

    A.q→next=p;p→prior=q;q→next→prior=p;p→next=q→next。

    B.p→next=q→next;q→next=p;q→next→prior=p;p→prior=q。

    C.p→prior=q;p→next=q→next;q→next=p;q→next→prior=p。

    D.p→next=q→next;q→next→prior=p;p→prior=q;→next=p。


    正确答案:D

  • 第7题:

    在一个带头结点的循环双向链表中,若要删除指针p所指向的结点则执行()嗓作。

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

    正确答案:D

  • 第8题:

    在双向链表中,要删除p所指的结点,其中所用的一条语句(p->next)->prior=p->prior;的功能是:使P所指结点的直接后继的左指针指向()


    正确答案:P所指结点的直接前驱

  • 第9题:

    在双向链表存储结构中,删除p所指的结点时须修改指针()。

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

    正确答案:A

  • 第10题:

    在一个双向链表中删除指针p所指向的结点时,需要对p->next->prior指针域赋值为()


    正确答案:p->prior

  • 第11题:

    填空题
    在一个双向链表中删除指针p所指向的结点时,需要对p->next->prior指针域赋值为()

    正确答案: p->prior
    解析: 双向链表中每个结点包含有两个指针域prior和next,分别指向其前趋结点和后继结点。删除指针p所指向的结点时,结点p的后继结点(p->next)的prior指针域应指向结点p的前趋结点p->prior。即p->nex->prior = p->prior。

  • 第12题:

    单选题
    在一个单链表中,若要删除p指针所指向结点的后继结点,则执行()
    A

    p->next=p

    B

    p=p->next->next

    C

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

    D

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


    正确答案: A
    解析: 假设q为p指针所指向的结点的后继结点,则q=p->next,若要删除q,应将q的链域q->next的值传给p指针的链域p->next,即p->next=p->next->next。

  • 第13题:

    在双向链表存储结构中,删除p所指的结点时须修改指针()。

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

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

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

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


    参考答案:A

  • 第14题:

    在一个单链表中,若删除p所指向结点的后续结点,则执行()。

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

    B、p->next=p->next;

    C、p=p->next;

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


    参考答案:A

  • 第15题:

    在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是()。

    A、p->next=s;s->prior=p;p->next->prior=s;s->next=p->next;

    B、s->prior=p;s->next=p->next;p->next=s;p->next->prior=s;

    C、p->next=s;p->next->prior=s;s->prior=p;s->next=p->next;

    D、s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;


    参考答案:D

  • 第16题:

    在循环双链表的p结点之后插入s结点的操作是______。

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

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

    C.p->next=s; 3->prior=p; p->next->prior=s; s->next=p->next;

    D.s->prior=p; s->next=p->next; p->next->prior=s; p->next=s;


    正确答案:D

  • 第17题:

    在一个双链表中,删除p结点(非尾结点)的操作是()。

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

    B.p->prior=p->prior->prior;p->prior->prior=p;

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

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


    参考答案:A

  • 第18题:

    设指针变量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的存储空间释放。

  • 第19题:

    已知单链表上一结点的指针为p,则删除该结点后继的正确操作语句是:()

    • A、 s= p->next; p=p->next;  free(s);
    • B、 p=p->next;  free(p);
    • C、 s= p->next; p->next=s->next;  free(s);
    • D、 p=p->next;  free(p->next);

    正确答案:C

  • 第20题:

    设单链表中指针p指向结点a,若要删除p之后的结点(若存在),则需修改指针的操作为()。

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

    正确答案:A

  • 第21题:

    在一个单链表中,若要删除p指针所指向结点的后继结点,则执行()

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

    正确答案:C

  • 第22题:

    填空题
    在双向链表中,要删除p所指的结点,其中所用的一条语句(p->next)->prior=p->prior;的功能是:使P所指结点的直接后继的左指针指向()

    正确答案: P所指结点的直接前驱
    解析: 暂无解析

  • 第23题:

    单选题
    在双向链表存储结构中,删除p所指的结点时须修改指针()。
    A

    p->next->prior=p->prior; p->prior->next=p->next;

    B

    p->next=p->next->next; p->next->prior=p;

    C

    p->prior->next=p; p->prior=p->prior->prior;

    D

    p->prior=p->next->next; p->next=p->prior->prior;


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

  • 第24题:

    单选题
    在一个带头结点的循环双向链表中,若要删除指针p所指向的结点则执行()嗓作。
    A

    p = p->prior;p->prior->next = p->next

    B

    p->prior->next = p;p->next = p->next->prior

    C

    p->next->prior = p;p->next = p->next->next

    D

    p->prior->next = p->next;p->next->prior = p->prior


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