5、删除单链表的结点时,不需要释放被删除结点的空间

题目

5、删除单链表的结点时,不需要释放被删除结点的空间


相似考题

3.阅读以下说明和 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-1define 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; }

参考答案和解析
A
更多“5、删除单链表的结点时,不需要释放被删除结点的空间”相关问题
  • 第1题:

    链表对于数据元素的插入和删除不需要移动结点,只需改变相关结点的【 】域的值。


    正确答案:指针
    指针 解析:链表是一种非线性结构,对数据元素进行插入和删除操作时,只要修改指针域即可,不需要移动元素。

  • 第2题:

    在长度为n(Il>1)的()上,删除第一个元素.其时间复杂度为O(n)。

    A.只有首结点指针的不带头结点的循环单链表
    B.只有尾结点指针的不带头结点的循环单链表
    C.只有尾结点指针的带头结点的循环单链表
    D.只有头结点的循环单链表

    答案:A
    解析:
    只有首结点指针的不带头结点的循环单链表删除第一个元素,需要遍历整个链表,因此A项的时间复杂度为O(n),BCD三项的时间复杂度都为O(1)。

  • 第3题:

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


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

  • 第4题:

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


    正确答案:O(n)

  • 第5题:

    设指针变量p指向单链表中某结点A,则删除结点A的后继结点需要的操作为()(不考虑存储空间的释放)。


    正确答案:p->next=p->next->next

  • 第6题:

    单向链表所具备的特点是()

    • A、可以随机访问任一结点
    • B、占用连续的存储空间
    • C、插入删除不需要移动元素
    • D、可以通过某结点的指针域访问其前驱结点

    正确答案:C

  • 第7题:

    在对双向循环链表做删除一个结点操作时,应先将被删除结点的前驱结点和后继结点链接好再执行删除结点操作。


    正确答案:正确

  • 第8题:

    链表所具备的特点是()。

    • A、可以随机访问任一结点
    • B、占用连续的存储空间
    • C、插人删除元素的操作不需要移动元素结点
    • D、可以通过下标对链表进行直接访问

    正确答案:C

  • 第9题:

    填空题
    设单链表中指针p指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。

    正确答案: p->next=(p->next)->next
    解析: 暂无解析

  • 第10题:

    判断题
    在线性链表中删除中间的结点时,只需将被删结点释放。
    A

    B


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

  • 第11题:

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

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

  • 第12题:

    填空题
    设指针变量p指向单链表中某结点A,则删除结点A的后继结点需要的操作为()(不考虑存储空间的释放)。

    正确答案: p->next=p->next->next
    解析: 暂无解析

  • 第13题:

    在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度都是O(n)。

    A.遍历链表和求链表的第i个结点
    B.在地址为P的结点之后插入一个结点
    C.删除开始结点
    D.删除地址为P的结点的后继结点

    答案:A
    解析:
    A项,由于单链表是非随机存取的存储结构,遍历链表和求链表的第i个结点都必须从头指针出发寻找,其时间复杂度为0(n);B项,由于已知待插入结点的前驱结点,可以直接实现插入,其时间复杂度为0(1);CD两项,可以直接实现删除操作,其时间复杂度为O(1)。

  • 第14题:

    在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->next;p->next=();


    正确答案:q->next

  • 第15题:

    在线性链表中删除中间的结点时,只需将被删结点释放。


    正确答案:错误

  • 第16题:

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


    正确答案:O(1)

  • 第17题:

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

    • A、单链表
    • B、双链表
    • C、单循环链表
    • D、带头结点的双循环链表

    正确答案:D

  • 第18题:

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


    正确答案:p->next=(p->next)->next

  • 第19题:

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


    正确答案:p->next=q->next

  • 第20题:

    设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间。

    • A、单链表
    • B、单循环链表
    • C、带尾指针的单循环链表
    • D、带头结点的双循环链表

    正确答案:D

  • 第21题:

    单选题
    单向链表所具备的特点是()
    A

    可以随机访问任一结点

    B

    占用连续的存储空间

    C

    插入删除不需要移动元素

    D

    可以通过某结点的指针域访问其前驱结点


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

  • 第22题:

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

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

  • 第23题:

    判断题
    在对双向循环链表做删除一个结点操作时,应先将被删除结点的前驱结点和后继结点链接好再执行删除结点操作。(  )
    A

    B


    正确答案:
    解析:

  • 第24题:

    单选题
    对链表中的数据元素的插入和删除()。
    A

    移动结点,不需要改变结点指针

    B

    不移动结点,需要改变结点指针

    C

    移动结点,并且需要改变结点指针

    D

    不移动结点,不需要改变结点指针


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