一.判断题
1.线性表L如果需要频繁地进行不同下标元素的插入、删除操作,此时选择顺序存储结构更好。
F
顺序表每次插入和删除的算法时间复杂度是O(N),因为在每次插入或删除时,需要让后边的所有结点移动,而链式存储的算法时间复杂度是O(1),只需要两次首尾链接或者一次首位链接。采用链式存储结构。根据实际需要申请内存空间,而当不需要时又可以将不用节点空间返还给系统。在链式存储结构中插入和删除操作不需要移动元素
2.栈是一种特殊的线性表,它的插入和删除操作分别在表的两端进行。
F
栈是一种特殊的线性表,其特殊性体现在元素插入和删除运算上,它的插入和删除运算仅限定在表的某一端进行,不能在表中间和另一端进行
3.可以通过少用一个存储空间的方法解决循环队列中队空和队满条件的区分
T
少用一个存储空间的方法是为了解决无法判别队列满还是空
4.链表 - 存储结构
链表中逻辑上相邻的元素,其物理位置也一定相邻。
F
5.链表 - 存储结构
链表是一种随机存取的存储结构。
F
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素
6.所有的排序算法中,关键字的比较操作都是不可避免的。
F
基数排序不是基于比较实现的。
7.二叉树中至少存在一个度为2的结点。
F
因为二叉树可以为空树,
8.链表的每个结点都恰好有一个指针。
F
链表中的结点可含多个指针域,分别存放多个指针。例如,双向链表中的结点可以含有两个指针域,分别存放指向其直接前趋和直接后继结点的指针。
9.算法可以没有输入,但是必须有输出。
T
10.需要借助于一个队列来实现DFS算法。
F
DFS是图的深度优先遍历算法。
二.判断题
1.下面算法的时间复杂度为 ▁▁▁▁▁。
int foo(int n)
{
return n * (n + 1) / 2;
}
O(1)
2.使用()来度量算法的空间复杂度。
B.算法运行时所占用的内存空间大小
3.循环队列的队满条件为 ( )。
A.(sq.rear+1) % maxsize ==(sq.front+1) % maxsize
B.(sq.front+1) % maxsize ==sq.rear
C.(sq.rear+1) % maxsize ==sq.front
D.sq.rear ==sq.front
C [解析] 本题主要考查的知识点是循环队列的队满条件。[要点透析] 约定循环队列的队头指针指示队头元素在数组中实际位置的前一个位置,队尾指针指示队尾元素在数组中的实际位置。当队尾指针“绕一圈”后赶上队头指针时,视为队满。
4.栈和队列的共同点是( )。
A.都是先进先出
B.都是先进后出
C.只允许在端点处插入和删除元素
D.没有共同点
C 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。
5.对于一个头指针为L的带头结点的单循环链表,判定该表为空表的条件是( )。
A.L->next==NULL
B.L==NULL
C.L->next==L
D.L!=NULL
C =是赋值,==才是判断
单向不带头结点链表为空的条件是head==NULL;
单向带头结点链表为空的条件是head->next==NULL;
单向循环不带头结点链表为空的条件是head==NULL;
单向循环带头结点链表为空的条件是head->next==head。
6.在一个有向图中,所有顶点的入度之和等于图的边数的( )倍。
A.1/2 B.1 C.2 D.4
C 在有向图中,所有顶点的度数之和是所有边数的2倍,因为一条边的两个端点具有两个“度”
7.一个图的邻接矩阵是对称矩阵,则该图一定是
A.无向图
B.有向图
C.无向图或有向图
D.以上都不对
A 无向图的邻接矩阵的呈现为对称矩阵,因为其边的指向都是对应的
8.堆的形状是一棵( )。
完全二叉树
9.排序方法的稳定性
下列排序算法中,▁▁ D▁▁▁ 是不稳定的。
A.直接插入排序
B.冒泡排序
C.基数排序
D.快速排序
一、稳定排序算法
1、冒泡排序2、鸡尾酒排序3、插入排序4、桶排序5、计数排序6、合并排序7、基数排序8、二叉排序树排序
二、不稳定排序算法
1、选择排序2、希尔排序3、组合排序4、堆排序5、平滑排序6、快速排序
10.排序算法的效率
堆排序的时间复杂度为 ▁▁B▁▁▁ 。
A.O(nn)
B.O(nlog2n)
C.O(2n)
D.O(n2)