1-1
在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 (1分)
F:反了
1-2
若用链表来表示一个线性表,则表中元素的地址一定是连续的。 (1分)
F
1-3
将长度分别为m,n的两个单链表合并为一个单链表的时间复杂度为O(m+n)。 (1分)
F
1-4
(neuDS)单链表不是一种随机存取的存储结构。 (1分)
T
在计算机科学中,随机存取(有时亦称直接访问)代表同一时间访问一组序列中的一个随意组件。反之则称循序访问,即是需要更多时间去访问一个远程组件。随机存取存储器的基本结构可分为三个部分:存储矩阵,地址译码器,读写电路。
2-1
设h
为不带头结点的单向链表。在h
的头上插入一个新结点t
的语句是:(2分)
h=t; t->next=h->next;
t->next=h->next; h=t;
h=t; t->next=h;
t->next=h; h=t;
2-2
在单链表中,若p
所指的结点不是最后结点,在p
之后插入s
所指结点,则执行 (2分)
s->next=p; p->next=s;
s->next=p->next; p=s;
s->next=p->next; p->next=s;
p->next=s; s->next=p;
2-3
带头结点的单链表h
为空的判定条件是: (2分)
h == NULL;
h->next == NULL;
h->next == h;
h != NULL;
2-4
将两个结点数都为N且都从小到大有序的单向链表合并成一个从小到大有序的单向链表,那么可能的最少比较次数是: (2分)
- 1
- N
- 2N
- NlogN
2-5
线性表若采用链式存储结构时,要求内存中可用存储单元的地址 (1分)
- 必须是连续的
- 连续或不连续都可以
- 部分地址必须是连续的
- 一定是不连续的
2-6
在具有N个结点的单链表中,实现下列哪个操作,其算法的时间复杂度是O(N)? (2分)
- 在地址为p的结点之后插入一个结点
- 删除开始结点
- 遍历链表和求链表的第i个结点
- 删除地址为p的结点的后继结点
2-7
对于一个具有N个结点的单链表,在给定值为x的结点后插入一个新结点的时间复杂度为 (2分)
- O(1)
- O(N/2)
- O(N)
- O(N2)
2-8
链表不具有的特点是: (1分)
- 插入、删除不需要移动元素
- 方便随机访问任一元素
- 不必事先估计存储空间
- 所需空间与线性长度成正比
2-9
(neuDS)在一个含有n个结点的有序单链表中插入一个新结点,使单链表仍然保持有序的算法的时间复杂度是( )。 (2分)
- O(1)
- O(log2n)
- O(n)
- O(n2)
2-10
将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为( )。 (2分)
- O(1)
- O(m)
- O(n)
- O(n+m)
2-11
(neuDS)在单链表中,增加一个头结点的最终目的是为了( )。 (2分)
- 使单链表至少有一个结点
- 方便运算的实现
- 标识表结点中首结点的位置
- 说明单链表是线性表的链式存储
2-12
在单链表中,要删除某一指定结点,必须先找到该结点的()。 (2分)
- 直接前驱
- 自身位置
- 直接后继
- 直接后继的后继
2-13
以下关于链式存储结构的叙述中,()是不正确的。 (2分)
- 结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
- 逻辑上相邻的结点物理上不必邻接
- 可以通过计算直接确定第i个结点的存储地址
- 插入、删除运算操作方便,不必移动结点
2-14
线性链表不具有的特点是()。 (2分)
- 随机访问
- 不必事先估计所需存储空间大小
- 插入与删除时不必移动元素
- 所需空间与线性长度成正比
2-15
线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。 (2分)
- 必须是连续的
- 部分地址必须是连续的
- 一定是不连续的
- 连续或不连续都可以
2-16
对线性表,在下列情况下应当采用链表表示的是()。 (2分)
- 经常需要随机地存取元素
- 经常需要进行插入和删除操作
- 表中元素需要占据一片连续的存储空间
- 表中的元素个数不变
2-17
不带表头附加结点的单链表为空的判断条件是头指针head满足条件()。 (2分)
- head==NULL
- head->next==NULL
- head->next== head
- head!=NULL
2-18
可以用带表头附加结点的链表表示线性表,也可以用不带头结点的链表表示线性表,前者最主要的好处是()。 (2分)
- 可以加快对表的遍历
- 使空表和非空表的处理统一
- 节省存储空间
- 可以提高存取表元素的速度