刷题Day_06

1.对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( A )
A.N+1)/2
B. N/2
C. N
D.[(1+N)*N ]/2
解析:第一个数的比较次数为1,第二个数的比较次数为2,第三个数的比较次数为3……以此类推第N个数的比较次数为N,所以总的比较次数为1+2+…+N=N(N+1)/2,平均比较次数为(N+1)/2,也即平均查找长度。
2.从逻辑结构上看,n维数组的每个元素均属于1个n维向量(A)
A.对
B.错
解析:数组中每增加一个向量,相当于增加一个维数,增加一个元素。
3.串是一种特殊的线性表,其特殊性体现在(B)
A.可以顺序存储
B.数组元素是一个字符
C.可以连续存储
D.数据元素可以是多个字符
解析:串又称为字符串,是一种特殊的线性表,其特殊性体现在数据元素是一个字符,也就是说串是一种内容受限的线性表。(栈和队列是操作受限的线性表)。
4.以下哪种排序算法对(1,3,2,4,5,6,7,8,9)进行的排序最快?(A)
A.冒泡
B.快排
C.归并
D.堆排
解析:若序列的初始状态基本有序,则选用直接插入排序和冒泡排序法较好。
5.设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找并且索引表和块内均采用顺序查找,则其平均查找长度为( D )。
A.6
B.11
C.5
D.6.5
解析:分块查找会分两部分进行,第一步先进行索引表查找判断其在那个字表中,第二步然后进行在字表中的查找。索引表被分成5块,所以平均查找长度为:(1+5)/2=3,字表中有6个元素,所以平均查找长度为:(1+6)/2=3.5,所以总的平均查找长度为3+3.5=6.5
6. 采用折半查找方法进行查找,数据文件应为(),且限于(A)
A.有序表 顺序存储结构
B.有序表 链式存储结构
C.随机表 顺序存储结构
D.随机表 链式存储结构
7.栈和队列是一种非线性数据结构。(B)
正确
错误
解析:栈和队列是特殊的线性表。
8.一个栈的输入序列是 12345,则栈的输出序列不可能是 12345(B)。
A.正确
B.错误
解析:1进栈,出栈;2进栈,出栈;3进栈,出栈;4进栈,出栈;5进栈,出栈。
9.线性表L=(a 1 ,a 2 , … ,a n ),下列陈述正确的是___D___。
A.每个元素都有一个直接前驱和一个直接后继
B.线性表中至少有一个元素
C.表中诸元素的排列必须是由小到大或由大到小
D.除第一个和最后一个元素外,其余每个元素都有且仅有一个直接前驱和直接后继
解析:线性表:由0个或多个元素组成的优先序列,第一个元素无前驱,最后一个元素无后继。
10. 设循环队列的结构是:
const int Maxsize=100;
typedef int Data Type;
typedef struct {
Data Type data[Maxsize];
int front, rear;
}Queue;
若 一个Queue类型的队列Q,试问判断队列满的条件应是下列哪一个语句(D)
A.Q.front=Q.rear;
B.Q.front-Q.rear=Maxsize;
C.Q.front+Q.rear=Maxsize;
D.Q.front==(Q.rear+1)%Maxsize;
解析:循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front=rear来判别队列是"空"还是"满"。解决这个问题的方法至少有两种:
① 另设一个布尔变量以区别队列的空和满;
②另一种方式就是数据结构常用的: **队满时:(rear+1)%n==front,**n为队列长度(所用数组大小),由于rear,front均为所用空间的指针,循环只是逻辑上的循环,所以需要求余运算。

猜你喜欢

转载自blog.csdn.net/weixin_43283092/article/details/83152168