1.若某线性表最常用的操作是在最后一个元素之后插入一个元素和删除进入表中的最后一个元素,则采用( )存储方式最节省运算时间和存储空间。
单链表
仅有头指针的单循环链表
双向链表
仅有尾指针的单循环链表
单链表:尾插入O(n),尾删O(n) 仅有头的单循环链表:尾插入O(n),尾删O(n)
双向链表:尾插入O(n),尾删O(n) 仅有尾指针的单循环链表:尾插入O(1),尾删O(n)
相比较而言时间上还是D最好。空间上,D项只多用一个尾指针空间复杂度尾O(1)
// 删除一个元素最关键的就是找到他的前驱结点,只有尾指针的单循环链表,找到其前驱时间复杂度为O(n),故选双向链表
下列叙述中,有关线性链表叙述正确的是()
正确答案:
D
你的答案:
A
(错误)
线性链表中的表头元素一定存储在其他元素的前面
线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面
线性链表中的各元素在存储空间中的位置必须是连续的
线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的
D
A的前两步操作只连接了P和S,而P原来的后继节点的链接丢失,错误。
B中前三步完成了P和S的链接,P原来后继节点和S的链接,但没有链接S和P原来的后继节点,错误。
C中前三步完成的工作与B相同,最后P的后继节点已经变成S,没有办法链接P原来的后继节点,也就没有办法使P原来的后继节点和S相连了,错误
3.从一个具有
n
个结点的单链表中查找其值等于
x
结点时,在查找成功的情况下,需平均比较(
)个结点。
正确答案:
D
你的答案:
A
(错误)
n
n/2
(n-1)/2
(n+1)/2
最少1次 最多n次 平均(n+1)/2次
4.下列叙述中正确的是( )。
每一个结点有两个指针域的链表一定是非线性结构
所有结点的指针域都为非空的链表一定是非线性结构
循环链表是循环队列的链式存储结构
线性结构的存储结点也可以有多个指针
链接:https://www.nowcoder.com/questionTerminal/f06ef3f6c2a14bd5984084f5b0864d53
来源:牛客网
【解析】一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。双向链表结点具有两个指针域,属于线性结构,
A
选项错误。循环链表所有结点的指针域都为非空,属于线性结构,
B
选项错误。循环链表是链表,循环队列属于队列,队列只能在队尾入队,在排头退队,链表可以在任何位置插入、删除,
C
选项错误。双向链表结点具有多个指针域,
D
选项正确。
5.线性表的链接实现有利于()运算
正确答案:
A
你的答案:
C
(错误)
插入
读表元素
查找
定位
链表易于插入/删除,顺序表易于寻址