算法与数据结构试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法与数据结构试题
第⼀章算法分析基础
1、下列时间复杂度最好的是( )
A 、O )(log 2n
B 、O )(2
n C 、O )(n D 、O )log (2n n
2、从逻辑上可以把数据结构分为哪两⼤类?()
A 、动态结构、静态结构
B 、顺序结构、链式结构
C 、线性结构、⾮线性结构
D 、初等结构、构造型结构
3、算法分析的主要任务是分析()
A .算法是否具有较好的可读性
B .算法中是否存在语法错误
C .算法的功能是否符合设计要求
D .算法的执⾏时间和问题规模之间的关系
4、下⾯程序段中带下划线的语句的执⾏次数是。

for(i=0;i<=n;i++)
for(j=0;j<=i;j++) x=x+1;
5、下列程序的时间复杂度为()
s=0;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
s=s+1;
A . O (10)
B . O (20)
C. O (1) D.O(102)
6、数据的最⼩单位是()
A.数据项
B.数据类型
C.数据元素
D.数据变量
7、下列程序的时间复杂度为()
i=1;k=100;
{
k=k+1;
i=i+2;
}
A.O(1)
B. O(n)
C. O(n3)
D.O(n2)
8、称算法的时间复杂度为O(logn),其含义是指算法的执⾏时间和_______的数量级相同。

第⼆章线性表
1、⾮空的循环单链表L的尾结点(由p所指)满⾜()
A.p->next=NULL
B. p=NULL
C. p->next= L
D. p= L
2、从⼀个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向
前移动的元素的个数是()
A.n-i
B.n-i+1
C.n-i-1
D.i
3、链表不具备的特点是()
A.可随机访问任⼀结点 B.插⼊删除不需要移动元素
C.不必事先估计存储空间 D.所需空间与其长度成正⽐
4、顺序表的存储密度为1,⽽链表的存储密度 _。

5、写算法,顺序查找⼀个元素值等于e的元素的逻辑序号。

若这样的元素不存在,则返回值为0。

6、完善下列程序段。

在⼀个单链表(已知每个结点含有数据域data 和指针域next)中删除p所指结点时,可执⾏如下操作:1)q=p->next;
2) p->data=___①____;
3) p->next=_____②____;
4) free(q);
题⽬如改成删除p所指的结点的后继结点, ②为
7、设单链表中结点结构为(data,link).已知指针q所指结点是指针p所指结点的直接前驱,若在*q 与*p之间插⼊结点*s,则应执⾏下列哪⼀个操作()
A. s->link=p->link; p->link=s; B. q->link=s; s->link=p
s->link=p; D. p->link=s; s->link=q;
8、若某线性表中最常⽤的操作是在第i个元素之前插⼊⼀个元素和删除第i个元素,则采⽤什么存储⽅式最节省时间。

( )
A、散列表
B、单链表
C、⼆叉链表
D、顺序表
9、写⼀算法实现带头结点的单链表L的就地逆置,即在原表的存储空间中将表(a1,a2,…,an)逆置为(an,…,a2,a1)。

10、指出下述程序段的功能是什么?
LinkList Demo(LinkList L){ // L 是⽆头结点单链表ListNode *Q,*P;
if(L&&L->next){
Q=L;L=L->next;P=L;
while (P->next) P=P->next;
P->next=Q; Q->next=NULL;
}
return L;
}
11、线性表(a1,a2,……,an)以链接⽅式存储,访问第i个位置元素的时间复杂性为()。

A、O(i)
B、O(1)
C、O(n)
D、O(i-1)
12、设⼀个链表最常⽤的操作是在末尾插⼊结点和删除尾结点,则选⽤哪个最节省时间()
A、单链表
B、单循环链表
C、带尾指针的单循环链表
D、带头结点的双循环链表
13、双向链表中有两个指针域,llink和rlink,分别指向前驱和后继,设p指向链表中的⼀个结点,q指向⼀待插⼊结点,想要求在p 前插⼊q,则正确的插⼊为()
A. p->llink=q; q->rlink=p; p-llink->rlink=q; q->llink=p->llink;
B. q->llink=p->llink; p-llink->rlink=q; q->rlink=p; p->llink= q->rlink;
C. q->rlink=p; p->llink=q; p-llink->rlink=q; q->rlink=p;
D. p-llink->rlink=q; q->rlink=p; q->llink=p->llink; p->llink=q;
14、线性表L=(a1,a2,……,an)⽤数组表⽰,假定删除表中任⼀元素的概率相同,则删除⼀个元素平均需要移动元素的个数是。

15、顺序存储结构是通过物理上相邻表⽰元素之间的关系;链式存储结构是通过表⽰元素之间的关系的。

1、循环队列存储在数组A[0..m]中,则⼊队时的操作为()
A. rear=rear+1
B. rear=(rear+1) % (m-1)
C. rear=(rear+1) % m
D. rear=(rear+1) % (m+1)
2、有6个元素6,5,4,3,2,1的顺序进栈,问下列哪⼀个不是合法的出栈序列?()
A、5 4 3 6 1 2
B、4 5 3 1 2 6
C、3 4 6 5 2 1
D、2 3 4 1 5 6
3、栈和队列的共同点是()
A、都是先进先出
B、都是先进后出
C、只允许在端点处插⼊和删除元素
D、没有共同点
4、对于栈操作数据的原则是()
A、先进先出
B、后进先出
C、后进后出
D、不分顺序
5、、顺序栈⽤data[1..n]存储数据,栈顶指针是top,则值为x的元素⼊栈的操作时
6、设⼀个栈的输⼊序列为1、2、3、4,则借助⼀个栈所得到的输出序列不可能的是哪个?()
A、1,2,3,4
B、4,3,2,1
C、1,3,4,2
D、4,1,2,3
7、⼀个栈的⼊栈序列为a,b,c,则出栈序列不可能的是
( )
A. c,b,a B.b,a,c
C.c,a,b D.a,c,b
8、设输⼊序列为a,b,c,d。

下⾯的四个序列中,借助⼀个栈能够得到的输出序列是()
A、d,c,a,b
B、c,a,d,b
C、a,c,d,b
D、d,a,b,c
9、若⼀个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下⾯x进栈的正确操作是哪个? ( )
A、top=top+1; V[top]=x
B、 V[top]=x;top=top+1
C、top=top-1; V[top]=x
D、 V [top]=x;top=top-1
10、表达式a*(b+c)-d的后缀表达式是 ( )
A、abcd*+-
B、abc+*d-
C、abc*+d-
D、-+*abcd
11、顺序栈S中top为栈顶指针,指向栈顶元素所在的位置,elem 为存放栈的数组,则元素e进栈操作的主要语句为()
A.s.elem[top]=e;
B.s.elem[top+1]=e;
s.top=s.top+1; s.top=s.top+1;
C.s.top=s.top+1;
D.s.top=s.top+1;
s.elem[top+1]=e; s.elem[top]=e;
12、循环队列sq中,⽤数组elem[0??25]存放数据元素,sq.front 指⽰队头元素的前⼀个位置,sq.rear指⽰队尾元素的当前位置,设当前sq.front为20,sq.rear为12,则当前队列中的元素个数为()
A.8
B.16
C.17
D.18
13、假设为循环队列分配的向量空间为Q[20],若队列的长度和队头指针值分别为13和17,则当前尾指针的值为_ ___。

14、在循环队列中,存储空间为0~n-1,设队头指针front指向队头元素前⼀个空闲元素,队尾指针指向队尾元素,那么队满标志为front=(rear+1)%n,队空标志为___ _____。

15、有5个元素,其进栈次序为A、B、C、D、E,在各种可能的出栈次序中,以元素C、D最先出栈(即C 第⼀个且D第⼆个出栈)的次序有哪⼏个?
16、指出下述程序段的功能是什么?
void Demo1(SeqStack *S){
int i; arr[64] ; n=0 ;
while ( !StackEmpty(S)) arr[n++]=Pop(S);
for (i=0, i< n; i++) Push(S, arr[i]);
} //Demo1
第四章数组
1、设有⼀个⼆维数组A[10][20],按列为主序存放于⼀个连续的存储空间中,A[0][0]的存储地址是200,每个数组元素占1个存储字,则A[6][2]的存储字地址是多少。

2、⼆维数组A[6][10]按⾏优先顺序存储,若每个数组元素占⽤4个存储单元,A[0][0]的存储地址为860,则数组元素A[3][5]的存
A.1000 B.860
C.1140 D.1200
第六章树和⼆叉树
1、设树T的度为4,其中度为1、
2、3和4的结点个数分别为4,2,1,1,则T中的叶⼦结点数为()
A. 5
B. 6
C. 7
D. 8
2、⼆叉树由、、三个基本单元组成。

3、试编写算法求出⼆叉树的深度。

⼆叉树的存储结构为如下说明的⼆叉链表:
typedef struct BiTNode {
TDataType data;
struct BiTNode *lchild,*rchild;
} BiTree;
4、将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为⼆叉树。

5、已知⼀棵⼆叉树的中序序列: E C B H F D J I G A,后序序列:ECHFJIGDBA,试画出该⼆叉树
6、设T是⼀棵⼆叉树,除叶⼦结点外,其它结点的度数皆为2,若 T 中有6个叶结点,试问:
(1)T树中共有多少⾮叶结点?
(2)若叶结点的权值分别为1,2,3,4,5,6。

请构造⼀棵哈曼夫树,并计算该哈曼夫树的带权路径长度wpl。

7、按⼆叉树的定义,具有3个结点的⼆叉树有⼏种()
A.3 B.4
C.5 D.6
8、对于⼀棵具有30个结点的完全⼆叉树,若⼀个结点的编号为5,则它的左孩⼦结点的编号为,右孩⼦结点的编号为,双亲结点的编号为。

9、由⼋个分别带权值为7、19、2、6、32、3、21、10的叶⼦结点构造⼀棵哈夫曼树,则该树的带权路径长度为____________。

10、已知⼀棵完全⼆叉树中共有768 个结点,则该⼆叉树中共有___________个叶⼦结点。

11、以⼆叉链表为存储结构,写⼀算法交换各结点的左右⼦树。

12、给出树如下图所⽰,请写出先序遍历和中序遍历的节点次序。

A
B
D
F C
G E
14、给定⼀组权值{9,6,14,2,3,16},请构造哈夫曼树,并计算其带权路径长度。

15、若⼀棵⼆叉树具有10个度为2的结点,5个度为1的结点,则
度为0的结点个数为()
A.9
B.11
C.15
D.不确定
16、线索⼆叉树是⼀种()结构
A .逻辑
B .逻辑和存储
C .物理
D .线性
17、⼀棵完全⼆叉树上有1001个结点,其中叶⼦结点的个数____ ___
18、给出树如下图所⽰,请写出先序遍历和中序遍历的节点次序。

J K I A
F C B
D
E H
19、已知⼆叉树的先序序列和中序序列分别为HDACBGFE 和ADCBHFEG,
画出该⼆叉树.
20、以⼆叉链表为⼆叉树的存储结构,写⼀算法计算所有结点个数。

21、以{4,5,6,7,8}作为叶⼦结点的权值构造哈夫曼树,并求其带权路径长度及个结点对应的哈夫曼编码。

第七章图
1、10个顶点的连通图的深度游先⽣成树的边数为()
A、11
B、10
C、9
D、⽆法确定
2、⽆向图的邻接矩阵是()
A、对称矩阵
B、零矩阵
C、上三⾓矩阵
D、对⾓矩阵
3、设图的邻接链表如题12图所⽰,则该图的边的数⽬是()
A.4 B.5
C.10 D.20
4、设⽆向图的顶点个数为n,则该图最多有多少条边。

()
A、n-1
B、n(n-1)/2
C、n(n+1)/2
D、n/2
5、在⼀个具有n个顶点的⽆向连接通图中,⾄少包含有
条边,⾄多包含有条边。

6、给出下图对应的邻接表
7、画出下图的最⼩⽣成树 V 0
V 5V 4V 6V 3V 1V 2
60504050
30
7042
5245
8、含n 个顶点的有向图中,每个顶点的度最⼤可达____ __。

9、求最短路径的Dijkstra 算法的时间复杂度为。

10、给出下图的从结点a 开始的遍历次序,1)深度优先;2)⼴度优先。

第8章查找
1、以下与数据的存储结构⽆关的术语是()
A、循环队列
B、链表
D、栈
2、设有⼀个长度为100的已排好序的表,⽤⼆分查找进⾏查找,若查找不成功,⾄少⽐较多少次
()
A、9
B、8
C、7
D、6
3、设有n个关键字,哈希查找法的平均查找长度是()
A.O(1) B.O(n)
C.O(long2n) D.O(n2)
4、对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()
A、(N+1)/2
B、N/2
C、N
D、[(1+N)*N]/2
5、Hash函数应以取值域满⾜什么的值()
A、最⼤概率
B、最⼩概率
C、平均概率
D、等概率
6、哈希表是通过将查找码按选定的和,把节点按查找码转换为地址进⾏存储的线性表。

7、在有序表A[20]中按⼆分查找⽅法查找元素A[13],依次⽐较的元素下标是多少?假设有序表的起始元素从A[0]开始存放。

( )
A、9,14,12,13
B、9,15,12,13
C、9,14,11,12,13
D、10,15,12,13
8、若对长度为10的有序表进⾏折半查找,则在等概率时查找成功的平均查找长度为____________。

第九章排序
1、算法模拟,设待排序的记录共7个,排序码分别为8,3,2,5,9,1,6。

(1)⽤直接插⼊排序。

试以排序码序列的变化描述形式说明排序全过程(动态过程)要求按递减顺序排列。

(2)直接选择排序。

试以排序码序列的变化描述形式说明排序全过程(动态过程)要求按递减顺序排列。

2、以关键字序列(265,301,751,129,937,863,742,694,076,438)为例,分别写出执⾏以下排序算法的各趟排序结束时,关键字序列的状态。

(1) 选择排序
3、直接插⼊排序在最好情况下的时间复杂度为()
A.O(n)
B.O(nlog2n)
C. O(log2n)
D.O(n2)
4、排序算法中,第⼀趟排序后,任⼀元素都不能确定其最终位置的算法是()
A.选择排序
B.快速排序
C.冒泡排序
D.插⼊排序
5、若对关键字序列(43,02,80,48,26,57,15,73,21,24,66)进⾏⼀趟增量为3的希尔排序,则得到的结果为_ __ ___。

6、以关键字序列(26,30,75,12,93,86,74,69,07,43)为例,分别写出执⾏以下排序算法的各趟排序结束时,关键字序列的状态。

(1) 2路归并排序
(2)冒泡排序。

相关文档
最新文档