1 如果链表最常用的操作是尾部插入节点和删除尾节点,那么链表最省时间的存储方式是
A 单链表 B 单循环链表 C 带尾指针的单循环链表 D 带头节点的双循环链表
答案:D
分析:带尾指针的单循环链表删除尾节点时不方便,所以带头节点的双循环链表最合适。
2、如果线性表的元素总数基本稳定,但经常在表头删除元素,在表尾插入元素,那么最好实现线性表。
A 带头指针的单链表 B 双向循环链表 C 循环序列队列 D 序列表
答案:C
分析:因为经常需要删除表头元素,在表尾插入元素,
A 如果使用带头指针的单向循环链表,则每次插入一个节点时,都必须遍历整个链表,找到链表的末尾,然后才能进行插入。
D 如果使用顺序表,每次删除表头元素时需要移动n-1个元素。
B 如果使用双向循环链表查找头尾节点,可能也需要 O(n)
C 由于线性表的元素总数基本稳定,且操作只在表头和表尾进行,因此使用循环顺序队列只需要移动头尾指针即可。
3 在双向链表中将指针q的节点插入到指针p的节点之前的操作为:
回答:
q->下一个=p;
q->先验=p->先验;
p->前一个->下一个=q;
p->先验=q;
分析:
4 在链式存储结构中,通常使用一个存储节点来存储一个数据
A 数据项 B 数据元素 C 数据结构 D 数据类型
答案:B
5、如果线性表最常用的操作是访问任意指定序号的元素,最后进行插入和删除操作,那么这种存储方式是最省时间的。
A 序列表 B 双链表 C 头节点双循环链表 D 单循环链表
答案:A
分析:顺序表支持随机访问。 可以通过下标直接访问元素,在末尾进行插入和删除操作。 只需要修改表格的长度,不需要移动元素。 因此,使用顺序表可以节省时间。
6 在单链表中,如果*p节点不是尾节点,则后面插入*s节点的操作为:
回答:
s->下一个=p->下一个;
p->下一个=s;
7 如果线性列表中最常用的操作是在最后一个元素后面插入一个元素和删除第一个元素。 存储方式最节省计算时间。
A 单链表 B 仅具有头指针的单循环链表 C 双链表 D 仅具有尾指针的单循环链表
答案:D
分析:
A 在单向链表中插入最后一个元素,需要遍历链表找到最后一个元素;
B在插入最后一个元素时仍然需要遍历链表找到最后一个元素;
C插入最后一个元素仍然需要遍历链表找到最后一个元素;
8 假设单链表中的指针p指向节点A,如果要删除A之后的节点,需要修改指针如下:
回答:
p->下一个=p->下一个->下一个;
9 如果将一个长度为n的循环单链表连接到一个长度为m的循环单链表,则该算法的时间复杂度为
AO(1) BO(n) CO(m) DO(m+n)
答案:D
分析:首先需要找到长度为m的循环单链表的尾指针,时间复杂度为O(m),然后找到长度为n的循环单链表的头指针,时间复杂度为O (1)、最后将一个长度为n的循环单链表与一个长度为m的循环单链表相连,发现尾指针指向头结点。 其时间复杂度为O(n),因此总时间复杂度为O(m+n)。
10 判断以头节点为单循环链表头为空的条件是:
回答:
头->下一个==头;
11 假设单链表的头指针变量为head,且该链表没有头节点,则空条件为
回答:
头==0;
12 将两个各有 n 个元素的有序列表组合成一个有序列表。 最少比较次数为
A n B 2n-1 C 2n D n-1
答案:A