一、选择题
1.下面关于算法说法错误的是(D) A 算法最终必须由计算机程序实现 B 为解决某问题的算法同为该问题编写的程序含义是相同的 C 算法的可行性是指指令不能有二义性 D 以上几个都是错误的
2.下面程序段的时间复杂性的量级为(D)
for(i=1;i<=n; i++)
for(j=1;j<=m; j++){
c[i][j]=0;
for(k=1;k<=w;k++)
c[i][j]+=a[i][k]*b[k][j]
}
A O(i*j*k) B O(n*m*k) C O(n*j*k) D O(n*m*w)
3.下面算法的时间复杂度为(B)
int f( unsigned int n ) {
if ( n==0 || n==1 ) return 1;
else return n*f(n-1);
}
A O(1) B O(n) C O(n^2) D O(n!)
4.执行下面程序段时,执行S语句的次数为(D)
for(int i=1; inext=s->next; s->next=p; C q->next=s; s->next=p; D p->next=s; s->next=q;
13.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行 (B) A s->next=p; p->next=s; B s->next=p->next; p->next=s; C s->next=p->next; p=s; D p->next=s; s->next=p;
14.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较多少个结点。 (D) A n; B n/2; C (n-1)/2; D (n+1)/2;
15.顺序存储结构是一种怎样的存储结构。 (A) A 随机存取 B 索引存取 C 顺序存取 D 散列存取
16.非空的循环单链表head的尾结点(由p所指向)满足 (C) A p->next= =NULL B p= =NULL C p->next= =head D p= =head
17.在一个单链表中,若删除p所指结点的后续结点,则执行 (A) A p->next= p->next->next; B p= p->next; p->next= p->next->next; C p->next= p->next; D p= p->next->next;
18.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行 (B) A HL = p; p->next = HL; B p->next = HL; HL = p; C p->next = HL; p = HL; D p->next = HL->next; HL->next = p;
19.一个带头结点head的循环单链表为空的判断条件是(C) A head==NULL B head->next==NULL C head->next==head D head!=NULL
20.在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行(C) A p = q->next ; p->next = q->next; B p = q->next ; q->next = p; C p = q->next ; q->next = p->next; D q->next = q->next->next; q->next = q;
21.线性表采用链式存储时,其地址 (D) A 必须是连续的; B 部分地址必须是连续的; C 一定是不连续的; D 连续与否均可以。
22.用链表表示线性表的优点是 (C) A 便于随机存取 B 花费的存储空间较顺序存储少 C 便于插入和删除 D 数据元素的物理顺序与逻辑顺序相同
23.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的多少个元素。 (A) A n/2 B (n+1)/2 C (n-1)/2 D n
24.带头结点的单链表head为空的判定条件是(B) A head = = NULL; B head->next = = NULL; C head->next = = head; D head! = NULL;
25.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用什么存储方式最节省运算时间。(B) A 单链表 B 顺序表 C 双链表 D 单循环链表
26.不带头结点的单链表head为空的判定条件是(A) A head = = NULL; B head->next = = NULL; C head->next = = head; D head! = NULL;
27.单链表中,增加一个头结点的目的是为了 (C) A 使单链表至少有一个结点 B 标识表结点中首结点的位置 C 方便运算的实现 D 说明单链表是线性表的链式存储
28.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间。(D) A 单链表 B 仅有头指针的单循环链表 C 双链表 D 仅有尾指针的单循环链表
29.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用什么存储方式最节省运算时间。 (D) A 单链表 B 双链表 C 单循环链表 D 带头结点的双循环链表
30.循环链表的主要优点是(D) A 不再需要头指针了 B 已知某个结点的位置后,能够容易找到他的直接前趋 C 在进行插入、删除运算时,能更好的保证链表不断开 D 从表中的任意结点出发都能扫描到整个链表
二、判断题
1.【正确】线性结构,是一种一对一的结构。
2.【正确】线性表中,存在唯一一个被称为第一元素的元素。
3.【错误】线性表中,每一个元素均存在前驱。
4.【错误】在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。
5.【正确】线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
6.【错误】线性表的链式存储结构优于顺序存储结构。
7.【正确】顺序存储的线性表可以按序号随机存取。
8.【错误】线性表的逻辑顺序与存储顺序总是一致的。
9.【错误】在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
10.【正确】线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。