有问题的下方评论或私信
1.链式存储的存储结构所占存储空间(A)
A.分两部分,一部分存节点值,另一部分存表示节点间关系的指针
B.只有一部分,存放节点值
C.只有一部分,存储表示节点间关系的指针
D.分两部分,一部分存放节点值,另一部分存放节点所占单元数
解析:链式表中节点分两部分 数据域和指针域
2.链表不具有的特点是(B)
A.插入、删除不需要移动元素
B.可随机访问任一元素
C.不必事先估计存储空间
D.所需空间与线性长度成正比
解析:链表不适用查改
3.下列选项中,(D)项是链表不具有的特点
A.插入和删除运算不需要移动元素
B.所需要的存储空间与线性表的长度成正比
C.不必事先估计存储空间大小
D.可以随机访问表中的任意元素
解析:链表不适用查改
4.在顺序表中,只要知道(D),就可在相同时间内求出任一结点的存储地址
A.基地址
B.结点大小
C.向量大小
D.基地址和结点大小
解析:An=A1+(n-1)*d
5.所谓静态链表就是一直不发生变化的链表(B)
A.对
B.错
解析:参考 https://blog.csdn.net/hhhhhyyyyy8/article/details/81027728
6.在以下的叙述中,正确的是(C)
A.线性表的顺序存储结构优于链表存储结构
B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况
C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况
D.线性表的链表存储结构优于顺序存储结构
解析:链式适用增删
7.用二叉链表法(link-rlink)存储包含 n 个结点的二叉树,结点的 2n 个指针区域中有 n+1 个为空指针(A)
A.正确
B..错误
解析:n个节点的二叉树一共有2n个指针,非空指针数等于树的边数(n-1),所以空指针数等于2n-(n-1)=n+1
8.在单链表中,要将s所指结点插入到p所指结点之后,其语句应为(D)
A.s->next=p+1; p->next=s;
B.(*p).next=s; (*s).next=(*p).next
C.s->next=p->next; p->next=s->next;
D.s->next=p->next; p->next=s;
解析:类似尾插法
9.下面哪项是数组优于链表的特点(D)?
A.方便删除
B.方便插入
C.长度可变
D.存储空间小
解析:数组中存储空间只需存储元素即可,链表中节点需要存储元素和下一节点指针
10.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度(C)
A.必定快
B.必定不快
C.在大部分情况下要快
D.取决于表递增还是递减
解析:顺序查找第一个元素用1次,查找最后一个元素用n次,方差是指查找的平均分布情况,折半查找的平均分布比顺序查找的低,所以更加快一点,当然还要看具体查找的位置。
11.下面哪个不是线性表(D)?
A.循环链表
B.队列
C.栈
D.关联数组
E.空字符串数组
F.双向链表
解析:关联数组属于Key-Value键值对存储结构,属于Map映射(或者叫字典)
12.线索二叉链表是利用(C)域存储后继结点的地址
A.lchild
B.data
C.rchild
D.root
解析:参考 https://blog.csdn.net/shenaisi/article/details/81291898
13.设散列表的长度为10,散列函数H(n)=n mod 7,初始关键字序列为 (33,24,8,17,21,10),用链地址法作为解决冲突的方法,平均查找长度是(B)
A.1
B.1.5
C.2
D.2.5
解析:参考 https://blog.csdn.net/yyyljw/article/details/80903391
14.对于链队,在进行删除操作时(D)
A.仅修改头指针
B.仅修改尾指针
C.头、尾指针都要修改
D.头、尾指针可能都要修改
解析:队列在一端进元素,另一端出元素
15.在一个长度为 n (n>1)的单链表上,设有头和尾两个指针,执行(B)操作与链表的长度有关
A.删除单链表中的第一个元素
B.删除单链表中的最后一个元素
C.在单链表第一个元素前插入一个新元素
D.在单链表最后一个元素后插入一个新元素
解析:AC只需要头指针即可,D只需要尾指针即可,B需要找到尾指针的前驱,所以事先得从头遍历
16.双循环链表中,任意一结点的后继指针均指向其逻辑后继(B)
A.T
B.F
解析:顺表逻辑相邻物理相邻;链表逻辑相邻物理不相邻
17.如果最常用的操作是取第i个结点及其前驱,则采用(D)存储方式最节省时间。
A.单链表
B.双链表
C.单循环链表
D.顺序表
解析:最常用是查找功能,顺序表更合适
18.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动(B)元素。
A.8
B.63.5
C.63
D.7
解析:在表头插入元素,原先127个元素后移,移动127个元素;在表尾插入元素,原先127个元素不动,移动0个元素;平均(0+127)/2=63.5
19.若某线性表最常用得操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用哪种存储方式最节省时间(A)
A.顺序表
B.双链表
C.带头结点的双循环链表
D.单循环链表
解析:最常用查找和尾插,顺序表合适
20.某一系统功能,需要一次性加载N(N在1000左右)个随机数,后续只对该集合进行遍历.最宜采用哪种结构存放?(C)
A.Hash表
B.二叉树
C.链表
D.图
解析:元素个数较多,连续分配地址占用空间大所以数组不适宜,且只进行遍历操作,故链表合适
21.单链表的存储密度(C)
A.大于1
B.等于1
C.小于1
D.不能确定
解析:存储密度=单链表数据项所占空间/结点所占空间,结点所占空间由数据项所占空间和存放后继结点地址的链域,所以,存储密度小于1
22.对于双向循环链表,在p指针所指的结点之后插入s指针所指结点的操作应为(D)
A.p->right=s;s->left=p;p->right->left=s;s->right=p->right;
B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;
C.s->left=p;s->right=p->right;p->right=s;p->right->left=s;
D.s->left=p;s->right=p->right;p->right->left=s;p->right=s;
解析:常识不解释
23.线性表中利用下面哪种方法(A)随机存储最省时间
A.顺序表
B.双链表
C.带头结点的双循环链表
D.单循环链表
解析:随机存储顺序表
24.假设要存储一个数据集,数据维持有序,对其的操作只有插入、删除和顺序遍历,综合存储效率和运行速度,下列哪种数据结构是最适合的是(B)
A.数组
B.链表
C.哈希表
D.队列
解析:常用插入,删除,遍历,适用链表
25.在双向链表存储结构中,删除p所指的结点时需要修改指针(A)
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
解析:常识不解释
26.在一个有N个元素的有序单链表中查找具有给定关键字的结点,平均情况下的时间复杂性为(B)
A.O(1)
B.O(N)
C.O(N2)
D.O(NlogN)
解析:查第一个元素O(1),最后一个元素O(n),平均O((n+1)/2)==>O(n)
27.在具有 n 个结点的单链表中,实现(A)的操作,其算法的时间复杂度都是 O(n)。
A.遍历链表或求链表的第 i 个结点
B.在地址为 P 的结点之后插入一个结点
C.删除开始结点
D.删除地址为 P 的结点的后继结点
解析:B复杂度O(1);C复杂度O(1);D复杂度O(1)
28.解析XML时,需要校验节点是否闭合,如必须有与之对应,用(D)数据结构实现比较好
A.链表
B.树
C.队列
D.栈
解析:同验证括号匹配问题
29.对一个具有n个元素的线性表,建立其有序单链表的时间复杂度为(D)
A.O(n)
B.O(1)
C.O(n^2)
D.O(nlog2n)
解析:先快速排序,再构建链表,排序是O(nlogn),构建链表是O(n) ,总的时间复杂度为O(nlogn)+O(n)=O(nlog2n)
nlogn+n=nlogn+nlog2=nlog2n 这是一个数学问题
30.关于链表,以下说法正确的是(B C)
A.需经常修改线性表L中的结点值适合采用链式结构
B.需不断对线性表L进行删除插入适合采用链式结构
C.带头结点的单链表,在表的第一个元素之前插入一个新元素与链表长度无关
D.删除单链表中的最后一个元素,与链表长度无关
解析:A常修改用顺序;D无论有无尾指针,都要先找到最后一个元素的前驱