一、绪论
1.1 数据结构基本概念
1.1.1 数据的最小单位();数据的基本单位() A.数据项 B.数据元素
1.1.2 数据结构是()的集合以及他们之间的() A.数据元素 B.关系
1.1.3 在数据结构中,与所使用的计算机无关的是数据的_____结构。A.逻辑
1.1.4 以下数据结构中_____属非线性结构 A.栈 B.串 C.队列 D.平衡二叉树
1.1.5 以下属于逻辑结构是_____。 A.顺序表 B.哈希表 C.有序表 D.单链表
1.1.6 以下不属于存储结构是_____。 A.栈 B.线索树 C.哈希表 D.双链表
1.1.7 数据的运算_____。
A.效率与采用何种存储结构有关 B.是根据存储结构来定义的
C.有算术运算和关系运算两大类 D.必须用程序设计语言来描述
1.2 算法相关
1.2.1 _____不是算法的基本特性。A.可行性 B.长度有限 C.在规定的时间内完成 D.确定性
1.2.2 算法的时间复杂度与_____有关。
A.问题规模 B.计算机硬件性能
C.编译程序质量 D.程序设计语言
1.2.3 算法分析的目的是_____。
A.找出数据结构的合理性 B.研究算法中输入和输出的关系
C.分析算法的效率以求改进 D.分析算法的易读性和文档性
二、线性表
2.1 线性表基础
2.1.1 线性表是_____。
A.一个有限序列,可以为空 B.一个有限序列,不可以为空
C.一个无限序列,可以为空 D.一个无限序列,不可以为空
2.1.2 线性表采用链表存储时,其存放各个元素的单元地址_____。
A.必须是连续的 B.一定是不连续的
C.部分地址必须是连续的 D.连续与否均可以
2.1.3 线性表的静态链表存储结构与顺序存储结构相比,优点是_____。
A.所有的操作算法实现简单 B.便于随机存取
C.便于插入和删除 D.便于利用零散的存储器空间
2.1.4 设线性表有n个元素,以下操作中,_____在顺序表上实现比在链表上实现效率更高。
A.输出第i(1≤i≤n)个元素值 B.交换第1个元素与第2个元素的值
C.顺序输出这n个元素的值 D.输出与给定值x相等的元素在线性表中的序号
2.1.5 对于一个线性表,既要求能够较快地进行插入和删除操作,又要求存储结构能够反映数据元素之间的逻辑关系,则应采用_____存储结构。
A.顺序 B.链式 C.散列 D.索引
2.1.6 要求线性表采用静态空间分配方式,且插入和删除操作时不需要移动元素,采用的存储结构是_____。
A.单链表 B.静态链表 C.双链表 D.顺序表
2.2 顺序表
2.2.1 在长度为n的顺序表中插入/删除一个元素的时间复杂度为_____.
A.O(1) B.O(log2n) C.O(n) D.O(n2)
2.2.2 将两个各有n个元素的递增有序顺序表归并成一个有序顺序表,其最少的比较次数是_____。
A.n B.2n-1 C.2n D.n-1
2.3 链表
2.3.1 带头节点的单链表L为空的判定条件是_____。
A.L==NULL B.L->next==NULL C.L->next==L D.L!=NULL
2.3.2 在单链表中查找指定值的节点/建立单链表的时间复杂度是_____。
A.O(log2n) B.O(1) C.O(n2) D.O(n)
2.3.3 在单链表中,增加一个头节点的目的是为了_____。
A.使单链表至少有一个节点 B.标识链表中重要节点的位置
C.方便运算的实现 D.说明单链表是线性表的链式存储结构
2.3.4 在一个双链表中,在*p节点之后插入节点*q的操作是_____。
A.q->prior=p;p->next=q;p->next->prior=q;q->next=p->next;
B.q->next=p->next;p->next->prior=q;p->next=q;q->prior=p;
C.p->next=q;q->prior=p;q->next=p->next;p->next->prior=q;
D.p->next->prior=q;q->next=p->next;q->prior=p;p->next=q;
2.3.5 带头节点的双循环链表L为空表的条件是_____。
A.L==NULL B.L->next->prior==NULL
C.L->prior==NULL D.L->next==L
2.3.6 某线性表最常用的操作是在尾元素之后插入一个元素和删除尾元素,则采用_____存储方式最节省运算时间。
A.单链表 B.循环单链表 C.双链表 D.循环双链表
2.3.7 某线性表最常用的操作是在尾元素之后插入一个元素和删除第一个元素,故采用_____存储方式最节省运算时间。
A.单链表 B.仅有头节点指针的循环单链表
C.双链表 D.仅有尾节点指针的循环单链表
三、栈和队列
3.1 栈
3.1.1 若元素a、b、c、d、e、f依次进栈,允许进栈、退栈的操作交替进行,但不允许连续3次退栈工作,则不可能得到的出栈序列是_____。
A.dcebfa B.cbdaef C.bcaefd D.afedcb
3.1.2 在数据处理过程中常需要保存一些中间数据,如果后保存的数据先处理,则使用_____来保存这些数据。
A.线性表 B.栈 C.队列 D.单链表
3.1.3 判定一个顺序栈st为(元素个数最多为MaxSize)空的条件为_____。
A.st.top==-1 B.st.top!=-1 C.st.top!=MaxSize D.st.top==MaxSize
3.1.4 判定一个顺序栈st(元素个数最多为MaxSize)为栈满的条件是_____。
A.st.top!=-1 B.st.top==-1 C.st.top!=MaxSize-1 D.st.top==MaxSize-1
3.1.5 表达式(a+a*b)*a+c*b/a的后缀表达式是_____。
A.a a b * + a * c b * a / + B.a a * b + a * c b * a / +
C.a a b * a * c b * + a / + D.a a b * + a c b * a / + *
3.1.6 链栈与顺序栈相比有一个明显的优点,即_____。
A.插入操作更方便 B.通常不会出现栈满的情况
C.总是不会出现栈空的情况 D.删除操作更加方便
3.1.7 将递归算法转换成非递归算法时,通常要借助的数据结构是_____。
A.线性表 B.栈 C.队列 D.树
3.2 队列
3.2.1 在数据处理过程中常需要保存一些中间数据,如果先保存的数据先处理,则使用_____来保存这些数据。 A.线性表 B.栈 C.队列 D.单链表
3.2.2 循环队列是_____。
A.不会产生下溢出 B.不会产生上溢出 C.不会产生假溢出 D.以上都不对