赞
踩
1.在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。F
单链表访问前驱结点的时间复杂度为O(N),访问后继结点的时间复杂度为O(1)。
.增加结点也分为前插和后插两种情况:前插的时间复杂度为O(N),后插的时间复杂度为O(1)。
原因如下 :访问(增加)前驱结点需要从头开始顺序访问,而访问(增加)后继结点只需要进行一次间接寻址的操作。
2.(neuDS)在线性表的顺序存储结构中可实现快速的随机存取,而在链式存储结构中则只能进行顺序存取。T
3.链表是一种随机存取的存储结构。 F 顺序表才是,链表是顺序存取的存储结构。
4.若用链表来表示一个线性表,则表中元素的地址一定是连续的。F 链表不一定是连续的
5.
线性表L在( )情况下适用于使用链式结构实现。
需经常修改L中的节点值
需不断对L进行删除插入
L含有大量节点
L中节点结构复杂
需经常修改L中的节点值 要修改某个值前,就要先查找到这个值,但是查找效率不如【顺序表】
需不断对L进行删除插入 嗯,就是干这个事情的。这是最突出的优点。
L含有大量节点 这个看情况,有大量节点需要做查找时用顺序表好,需要频繁修改用链式表好。
L中节点结构复杂 节点结构复杂不复杂跟顺序表和链式表关系不大。
2.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间()
A.单链表
B.仅有尾指针的单循环链表
C.仅有头指针的单循环链表
D.带头结点的双循环链表
答案:B
解析:注意,该题指明插入和删除是在最后一个元素之后操作的,所以尾结点可以直接往后操作,更省时间。
3.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用哪种存储方式最节省运算时间?()
A.单链表
B.双链表
C.单循环链表
D.带头结点的双循环链表
答案:D
解析:结合第三题,在没有尾结点的情况下,双循环链表可以直接操作表尾,所以更节省时间。
4.将线性表La和Lb头尾连接,要求时间复杂度为O(1),且占用辅助空间尽量小。应该使用哪种结构?()
A.单链表
B.单循环链表
C.带尾指针的单循环链表
D.带头结点的双循环链表
答案“C
解析:(单链表各种操作的时间复杂度在题型(一)中通过例题已详细说明)选项C和D的时间复杂度都为 O(1),但C的指针少,占用的辅助空间更小。
5.
1采用多项式的非零项链式存储表示法,如果两个多项式的非零项分别为N1和N2个,最高项指数分别为M1和M2,则实现两个多项式相乘的时间复杂度是:(2分)
O(N1×N2)
O(M1×M2)
O(N1+N2)
O(M1+M2)
解析:要实现两个多项式的乘法,需要让一个多项式的每一项乘以另外一个多项式的每一项,因此这个题目的时间复杂度只跟非零项的个数有关,也就是跟N有关,与最高项的指数无关,也就是跟M无关。
将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为( )。
A.
O(1)
B.
O(m)
C.
O(n)
D.
O(n+m)
由于将长度为n的单链表链接在长度为m的单链表之后的操作,需要把长度为m的单链表遍历一遍,找到最后一个节点,所以时间复杂度为O(m)。
6.单链表创建的时间复杂度是O (n),而要建立一个有序的单链表,则每生成一个新结点时需要和已有的结点进行比较,确定合适的插入位置,所以时间复杂度是 O (n2)。
参考答案:D.
应该是先排序,在构建链表,排序是O(nlogn),构建链表是O(n)
总的时间复杂度为O(nlogn)+O(n)=O(nlog2n)
可以用带表头附加结点的链表表示线性表,也可以用不带头结点的链表表示线性表,前者最主要的好处是()。B.使空表和非空表的处理统一
以下关于链式存储结构的叙述中,(C)是不正确的。
A.
结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
B.
逻辑上相邻的结点物理上不必邻接
C.
可以通过计算直接确定第i个结点的存储地址
D.
插入、删除运算操作方便,不必移动结点
在顺序表中插入一个结点的时间复杂度都是O(n2),排序的时间复杂度为O(n2)或O(nlog2n)。顺序表是一种随机存取结构,访问第i个结点和求第i个结点的直接前驱都可以直接通过数组的下标直接定位,时间复杂度是O(1)。
储密度是指一个结点数据本身所占的存储空间和整个结点所占的存储空间之比,假设单链表一个结点本身所占的空间为D,指针域所占的空间为N,则存储密度为:D/(D+N),一定小于1。
求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低
!以下说法错误的是 (c )。
A.
对于线性表来说,定位运算LocateElem在顺序表和单链表上的时间复杂度均为O(n)
B.
插入、删除操作在顺序表上的实现,平均时间复杂度为O(n)
C.
在链表上实现读表元运算的平均时间复杂度为O(1)
D.
插入、删除操作在链表上的实现可在O(1)时间内完成
已创建如下的单向链表结构,指针变量s指向链表的第一个结点。以下程序段实现的功能是( b)。
p=s->next;
s->next=s->next->next;
free(p);
A.
首结点成为尾结点
B.
删除首节点的后继节点
C.
删除首结点
D.
删除尾结点
双链表 - 插入结点
在双链表中,将 s 所指新结点插入到 p 所指结点之后,其语句应该为 ▁▁▁▁▁ 。
s->next = p->next; p->next->prev = s; p->next = s; s->prev = p;
在单链表中,将 s 所指新结点插入到 p 所指结点之后,其语句应该为
s->next = p->next; p->next = s;
不带头结点的单链表(头指针为head)为空的判定条件是( )head=null
一个单链表中,若删除p所指结点的后续结点,则执行 p = p->next; p->next = p->next->next;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。