数据结构试题及答案
一、单项选择题
绪论
1.计算机中的算法一般具有输入、输出和( C  )五个基本性质。
A.确定性、有穷性、稳定性        B.易读性、确定性、可行性
C.有穷性、确定性、可行性        D.可行性、可移植性、可扩展性
2.数据的最小单位是(B )。
(A)数据元素 (B) 数据项 (C) 数据类型 (D) 数据变量
3.以下数据结构中(D)属非线性结构。
A.栈                    B.串                    C.队列            D.平衡二叉树
4.以下不属于存储结构是(B) 。
A.栈                    B.线索树                C.哈希表            D.双链表
5.算法的时间复杂度取决于(C)。
A. 问题的规模                        B. 待处理数据的初始状态
C. A和B                            D. 计算机的配置
6.在(D)中将会用到栈结构。
A. 递归调用          B. 函数调用      C. 表达式求值          D.以上场景都有
7.某算法的空间复杂度为O(1),则(B)。
A.该算法执行不需要任何辅助空间
B.该算法执行所需辅助空间大小与问题规模n无关
C.该算法执行不需要任何空间
D.该算法执行所需全部空间大小与问题规模n无关
8.顺序表和链表相比存储密度较大,这是因为(B )。
A.顺序表的存储空间是预先分配的
B.顺序表不需要增加指针来表示元素之间的逻辑关系
C.链表中所有节点的地址是连续的
D.顺序表中所有元素的存储地址是不连续的
9.n是描述问题规模的非负整数,下面程序片段的时间复杂度为( A)。
x=1;
while (x<=n)
    x=5*x;
A. O(log5n)            B.O(n)            C.O(nlog5n)            D.O(n5)
10.数据结构是指 (D) 。
A. 一种数据类型 C. 相互之间存在一种或多种特定关系的数据元素的集合
B. 数据的存储结构D. 一组性质相同的数据元素的集合
11.以下算法的时间复杂度为 (A)    。
void fun(int n)
{    int i=1;
    while (i<=n)
        i++;
}
A. O(n)                                B. O()
C. O(nlog2n)                            D. O(log2n)
12.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储(C) 。
A. 数据的处理方法                      B. 数据元素的类型
C. 数据元素之间的关系                  D. 数据的存储方法
13.以下数据结构中元素之间为非线性关系的是(D) 。
A.栈                B.队列                C.线性表            D.以上都不是
线性表
14.设线性表有n个元素,以下操作中,  A  在顺序表上实现比在链表上实现效率更高。
A.输出第i(1≤i≤n)个元素值
B.交换第1个元素与第2个元素的值
C.顺序输出这n个元素的值
D.输出与给定值x相等的元素在线性表中的序号
15.下面关于线性表的叙述,错误的是( D  )。
A.线性表的顺序存储方式需要占用一块连续的存储空间   
  B.线性表的链式存储方式不必占用一块连续的存储空间
  C.线性表采用链式存储便于插入和删除操作的实现
  D.线性表采用顺序存储便于插入和删除操作的实现
16.在含有n个节点的单链表中查第i个节点的平均时间复杂度是 (D)。
A.O(log数组和链表2n)            B.O(1)                C.O(n2)            D.O(n)
17.设线性表中有n个元素,以下运算中,(A)在单链表上实现要比在顺序表上实现效率更高。
A.删除指定位置元素的后一个元素
B.在最后一个元素的后面插入一个新元素
C.顺序输出前k个元素
D.交换第i个元素和第n-i+1个元素的值(i=1,2,…,n
18.在一个带头结点的循环单链表L中,删除元素值为x的结点,算法的时间复杂度为 (A) 。
A. O(n)                                B. O()
C. O(nlog2n)                            D. O(n2)
19.双向链表中有两个指针域,prior和next,分别指向前驱和后继,设p指向链表中的一个结点,q指向一待插入结点,现要求在p前插入q,则正确的插入为( D  )
A. p->prior=q; q->next=p; p->prior->next=q; q->prior=p->prior;
B. q->prior=p->prior; p->prior->next=q; q->next=p; p->prior=q->next;