niusouti.com
参考答案和解析
前驱
更多“在单链表中,要删除某一指定的结点,必须找到该节点的 _______ 节点。”相关问题
  • 第1题:

    在单链表中,指针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

  • 第2题:

    已知线性表中的元素以值递增有序排列,并以单链表作存储结构(不带表头节点)。试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。


    参考答案:#include #include typedef struct list{ int data; struct list *next; }list; void fun(list *head,int list*pre,*p; pre=head; p=pre->next; while(p){ if(p->data>x&&p->datanext=p->next; p=pre->next; else{pre=pre->next; p=pre->next; voidf(type* list,int length) inttop=length; int base=0; type tmp; while(top>base) tmp=list[top];list[top]=list[base]; list[base]=tmp; top--; base++;

  • 第3题:

    循环链表的主要优点是(1)。

    A.不再需要头指针了

    B.已知某个节点的位置后,能很容易找到它的直接前驱节点

    C.在进行删除操作后,能保证链表不断开

    D.从表中任一节点出发都能遍历整个链表


    正确答案:D
    解析:链表或设头指针或设尾指针,因此选项A被排除。选项B指的是双向循环链表。由于链表都要保证删除操作后,仍为链表,因此选项C也被排除。

  • 第4题:

    在单链表中,增加头节点的目的是

    A.方便运算的实现

    B.使单链表至少有一个节点

    C.标识表节点中首节点的位置

    D.说明单链表是线性表的链式存储实现


    正确答案:A
    解析:头节点不仅标识了表中首节点的位置,而且根据单链表(包含头节点) 的结构,只要掌握了表头,就能够访问整个链表,因此增加头节点的目的是为了便于运算的实现。

  • 第5题:

    循环链表的主要优点是(64)。

    A.不再需要头指针

    B.在进行删除操作后,能保证链表不断开

    C.从表中任一节点出发都能遍历整个链表

    D.能很容易找到它的直接前驱节点


    正确答案:C
    解析:链表是用连续(或不连续)的存储单元存储数据元素,元素之间的逻辑关系用“指针”指明。链表具体分为以下几种形式。①单向链表中节点包含一个指针,指明其直接前驱(或后继)元素节点;②双向链表中节点包含两个指针,分别指明其直接前驱和直接后继元素节点;③循环链表是最后节点的指针指向头节点,它可在任何位置上沿指针遍历整个链表。

  • 第6题:

    群组服务是SC提供的一项增值服务,当某节点呼叫某一服务号时,SC在该群组服务提供者列表中找()和该节点建立呼叫。

    A.任一空闲节点

    B.指定节点

    C.任一节点

    D.指定空闲节点


    参考答案:A

  • 第7题:

    在n个结点的单链表中要删除已知结点*p,需找到它的(),其时间复杂度为()。


    正确答案:前驱结点的地址 O(n)

  • 第8题:

    在单链表中,若给定某个结点的指针,要删除该结点的后继结点的时间复杂度为()。


    正确答案:O(1)

  • 第9题:

    在单链表中,要访问某个结点,只要知道该结点的指针即可;因此,单链表是一种随机存储结构。


    正确答案:错误

  • 第10题:

    在单链表中,要取得某个元素,只要知道该元素所在结点的地址即可,因此单链表是随机存取结构。


    正确答案:错误

  • 第11题:

    填空题
    在单链表中,若给定某个结点的指针,要删除该结点的后继结点的时间复杂度为()。

    正确答案: O(1)
    解析: 暂无解析

  • 第12题:

    填空题
    在单链表中,若给定某个结点的数据信息,要删除该结点的后继结点的时间复杂度为()。

    正确答案: O(n)
    解析: 暂无解析

  • 第13题:

    循环链表的主要优点是(44)。

    A.已知某个节点的位置后,能很容易找到它的直接前驱节点

    B.在进行删除操作后,能保证链表不断开

    C.从表中任意节点出发都能遍历整个链表

    D.不再需要头、尾指针


    正确答案:C
    解析:链表是用连续(或不连续)的存储单元存储数据元素,元素之间的逻辑关系用“指针”指明。链表具体分为以下几种形式。1)单向链表中节点包含一个指针,指明其直接前驱(或后继)元素节点:2)双向链表中节点包含两个指针,分别指明其直接前驱和直接后继元素节点;3)循环链表是最后节点的指针指向头节点,它可在任何位置上沿指针遍历整个链表。

  • 第14题:

    若某链表最常用的操作是在最后一个节点之后插入一个节点和删除最后一个节点,则采用______存储方式最节省时间。

    A.单链表

    B.双链表

    C.单循环链表

    D.带头节点的双循环链表


    正确答案:D

  • 第15题:

    在一个长度为n(n>1)的带头结点的单链表head上,另设有尾指针r(指向尾结点),执行()操作与链表的长度有关。

    A.删除单链表中的第一个元素

    B.删除单链表中的尾结点

    C.在单链表的第一个元素前插入一个新结点

    D.在单链表的最后一个元素后插入一个新结点


    参考答案:B

  • 第16题:

    在一个双链表中,包括头结点在内共有6个节点,则共有 【】 个指针。


    正确答案:10
    头结点和尾节点都只有一个指针,其他的节点是4个指针,所以共有10个指针

  • 第17题:

    阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 函数 GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。 函数DelListElem(LinkList L,int i,ElemType *e) 的功能是删除含头结点单链表的第 i个元素结点,若成功则返回 SUCCESS ,并由参数e 带回被删除元素的值,否则返回ERROR 。 例如,某含头结点单链表 L 如图 4-1 (a) 所示,删除第 3 个元素结点后的单链表如 图 4-1 (b) 所示。图4-1

    define SUCCESS 0 define ERROR -1 typedef int Status; typedef int ElemType; 链表的结点类型定义如下: typedef struct Node{ ElemType data; struct Node *next; }Node ,*LinkList; 【C 代码】 LinkList GetListElemPtr(LinkList L ,int i) { /* L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点: 若找到,则返回该元素结点的指针,否则返回NULL */ LinkList p; int k; /*用于元素结点计数*/ if (i<1 ∣∣ !L ∣∣ !L->next) return NULL; k = 1; P = L->next; / *令p指向第1个元素所在结点*/ while (p && (1) ) { /*查找第i个元素所在结点*/ (2) ; ++k; } return p; } Status DelListElem(LinkList L ,int i ,ElemType *e) { /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/ LinkList p,q; /*令p指向第i个元素的前驱结点*/ if (i==1) (3) ; else p = GetListElemPtr(L ,i-1); if (!p ∣∣ !p->next) return ERROR; /*不存在第i个元素*/ q = (4) ; /*令q指向待删除的结点*/ p->next = q->next; /*从链表中删除结点*/ (5) ; /*通过参数e带回被删除结点的数据*/ free(q); return SUCCESS; }


    正确答案:(1) k<i
    (2) p = p->next
    (3) p=L
    (4) p->next
    (5) *e = q->data

  • 第18题:

    阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
    [说明]
    函数GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。
    函数DelListElem(LinkList L,int i,ElemType *e)的功能是删除含头结点单链表的第i个元素结点,若成功则返回SUCCESS,并由参数e带回被删除元素的值,否则返回ERROR。
    例如,某含头结点单链表L如下图(a)所示,删除第3个元素结点后的单链表如下图(b)所示。
    1.jpg

    #define SUCCESS 0 #define ERROR -1 typedef intStatus; typedef intElemType;

    链表的结点类型定义如下:

    typedef struct Node{ ElemType data; struct Node *next; }Node,*LinkList; [C代码] LinkListGetListElemPtr(LinkList L,int i) { /*L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点; 若找到,则返回该元素结点的指针,否则返回NULL */ LinkList p; int k; /*用于元素结点计数*/ if(i<1 || !L || !L->next) return NULL; k=1; p=L->next; /*令p指向第1个元素所在结点*/ while(p &&______){ /*查找第i个元素所在结点*/ ______; ++k; } return p; } StatusDelListElem(LinkList L,int i,ElemType *e) { /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/ LinkList p,q; /*令P指向第i个元素的前驱结点*/ if(i==1) ______; else p=GetListElemPtr(L,i-1); if(!P || !p->next) return ERROR; /*不存在第i个元素*/ q=______; /*令q指向待删除的结点*/ p->next=q->next; //从链表中删除结点*/ ______; /*通过参数e带回被删除结点的数据*/ free(q); return SUCCESS; }


    答案:
    解析:
    k<i
    p=p->next
    p=L
    p->next
    *e=q->data


    【解析】

    本题考查C语言的指针应用和运算逻辑。
    本问题的图和代码中的注释可提供完成操作的主要信息,在充分理解链表概念的基础上填充空缺的代码。
    函数GetListElemPtr(LinkList L,int i)的功能是在L为头指针的链表中查找第i个元素,若找到,则返回指向该结点的指针,否则返回空指针。描述查找过程的代码如下,其中k用于对元素结点进行计数。

    k=1; p=L->next; /*令p指向第1个元素所在结点*/

  • 第19题:

    在单链表中,若给定某个结点的数据信息,要删除该结点的后继结点的时间复杂度为()。


    正确答案:O(n)

  • 第20题:

    在单链表中,要访问某个结点,只要知道该结点的地址即可;因此,单链表是一种随机存取结构。


    正确答案:错误

  • 第21题:

    要想删除1个链表中的节点,必须的操作包括:()

    • A、判断该节点是否是头节点
    • B、删除该节点
    • C、将前1节点的指针指向被删除节点的后1节点
    • D、将被删除节点的指针设为空

    正确答案:A,B,C

  • 第22题:

    群组服务是SC提供的一项增值服务,当某节点呼叫某一服务号时,SC在该群组服务提供者列表中找()和该节点建立呼叫。

    • A、任一空闲节点
    • B、指定节点
    • C、任一节点
    • D、指定空闲节点

    正确答案:A

  • 第23题:

    多选题
    要想删除1个链表中的节点,必须的操作包括:()
    A

    判断该节点是否是头节点

    B

    删除该节点

    C

    将前1节点的指针指向被删除节点的后1节点

    D

    将被删除节点的指针设为空


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

  • 第24题:

    填空题
    在n个结点的单链表中要删除已知结点*p,需找到它的(),其时间复杂度为()。

    正确答案: 前驱结点的地址 O(n)
    解析: 暂无解析