全部科目 > 程序员 >
2012年下半年 上午试卷 综合知识
第 37 题
知识点 线性表的单链表存储结构  
关键词 链表   时间复杂度  
章/节 常用数据结构  
 
 
在具有n个结点的有序单链表中插入一个新结点并保持有序的运算的时间复杂度为(37)。
 
  A.  O(1)
 
  B.  O(logn)
 
  C.  O(n)
 
  D.  O(n2)
 
 




 
 
相关试题     线性表 

  第36题    2018年下半年  
以下关于线性表采用顺序存储结构的优点的叙述中,正确的是( )。

  第37题    2020年下半年  
对于采用头指针作为唯一标识的单链表,其优点是( )。

  第40题    2017年上半年  
折半(二分)查找法适用的线性表应该满足( )的要求。

 
知识点讲解
· 线性表的单链表存储结构
 
        线性表的单链表存储结构
        单链表中的每个节点由两部分组成:数据域和指针域。节点形式如下:
        
        其中,data部分称为数据域,用于存储线性表的一个数据元素(节点)。next部分称为指针域或链域,用于存放一个指针,该指针指向本节点所含数据域元素的直接后继所在的节点。若数据元素的类型用ElemType表示,则单链表的类型定义如下:
        
        单链表分为带头节点(其next域指向第一个节点)和不带头节点两种类型,由于头指针的设置使得对链表的第一个位置上的操作与在表其他位置上的操作一致,因而可简化运算的实现过程。
        在单链表上实现线性表基本运算的函数如下。
        1)初始化函数initlist(Slink *head)
        初始化函数用于创建一个头节点,由head指向它,该节点的next域为空,data域未设定任何值。由于调用该函数时,指针head在本函数中指向的内容发生改变,为了返回改变的值,因此使用了应用型参数,其时间复杂度为O(1)。初始化函数的语法如下:
        
        2)插入函数insert(Slink *head, int i, ElemType x)
        插入函数的设计思想是:创建一个data域值为x的新节点*p,然后插入到head所指向的单链表的第i个节点之前。为保证插入正确有效,必须查找到指向第i个节点的前一个节点的指针,主要的时间耗费在查找上,因而在长度为n的线性单链表进行插入操作的时间复杂度为On)。插入函数的语法如下:
        
        3)删除函数delete(Slink *head, int i, ElemType x)
        删除函数的设计思想是:线性链表中元素的删除要修改被删除元素前驱的指针,回收被删除元素所占的空间。主要的时间耗费在查找上,因而在长度为n线性单链表进行删除操作的时间复杂度为On)。删除函数的语法如下:
        
        4)查找函数get(Slink *head, int i)
        查找函数的设计思想是:线性链表中查找元素要找元素前驱的指针。在长度为n的线性单链表进行查找操作的时间复杂度为On)。查找函数的语法如下:
        
        5)求单链表长函数Length(Slink *head)
        求单链表长函数的设计思想是:通过遍历的方法,从头数到尾,即可得到单链表长。求单链表长函数的语法如下:
        



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有