数据结构与算法模拟题

合集下载

算法与数据结构试题

算法与数据结构试题

算法与数据结构试题第⼀章算法分析基础1、下列时间复杂度最好的是( )A 、O )(log 2nB 、O )(2n C 、O )(n D 、O )log (2n n2、从逻辑上可以把数据结构分为哪两⼤类?()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=NULLB. p=NULLC. p->next= LD. p= L2、从⼀个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动的元素的个数是()A.n-iB.n-i+1C.n-i-1D.i3、链表不具备的特点是()A.可随机访问任⼀结点 B.插⼊删除不需要移动元素C.不必事先估计存储空间 D.所需空间与其长度成正⽐4、顺序表的存储密度为1,⽽链表的存储密度 _。

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

数据结构与算法分析习题与参考答案

数据结构与算法分析习题与参考答案

大学《数据结构与算法分析》课程习题及参考答案模拟试卷一一、单选题(每题 2 分,共20分)1.以下数据结构中哪一个是线性结构?( )A. 有向图B. 队列C. 线索二叉树D. B树2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下( )语句序列。

A. p=q; p->next=q;B. p->next=q; q->next=p;C. p->next=q->next; p=q;D. q->next=p->next; p->next=q;3.以下哪一个不是队列的基本运算?()A. 在队列第i个元素之后插入一个元素B. 从队头删除一个元素C. 判断一个队列是否为空D.读取队头元素的值4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成( )个不同的字符串?A.14B.5C.6D.85.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。

以下6-8题基于图1。

6.该二叉树结点的前序遍历的序列为( )。

A.E、G、F、A、C、D、BB.E、A、G、C、F、B、DC.E、A、C、B、D、G、FD.E、G、A、C、D、F、B7.该二叉树结点的中序遍历的序列为( )。

A. A、B、C、D、E、G、FB. E、A、G、C、F、B、DC. E、A、C、B、D、G、FE.B、D、C、A、F、G、E8.该二叉树的按层遍历的序列为( )。

A.E、G、F、A、C、D、B B. E、A、C、B、D、G、FC. E、A、G、C、F、B、DD. E、G、A、C、D、F、B9.下面关于图的存储的叙述中正确的是( )。

A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?( )A. a,g,h,m,n,p,q,x,zB. a,g,m,h,q,n,p,x,zC. g,m,q,a,n,p,x,h,zD. h,g,m,p,a,n,q,x,z二、填空题(每空1分,共26分)1.数据的物理结构被分为_________、________、__________和___________四种。

算法与数据结构参考例卷

算法与数据结构参考例卷

3、设该树度为 k 的节点数为 nk,则有
第 9 页 共 11 页
n n0 n1 n2 nk 1 nk
另外,该树的分支总数 n - 1 n1 2n2 (k 1)nk 1 knk ,即:
n n1 2n2 (k 1)nk 1 knk 1
由以上两式可得:
n0 n1 n2 nk 1 nk n1 2n2 (k 1)nk 1 knk 1
即:
(k 1)nk n0 (n2 2n3 (k 2)nk 1 ) 1 n0 1 (i 1)ni
总次数为:825
第 11 页 共 11 页
2 2
址是

6、已知关键字值序列 5,8,12,19,28,20,15,22 是极小化堆,插入关键字值 3,调整 后得到的极小化堆是 7、一棵线索二叉树中含有的线索数比分支数多 8、假如一个图 G 的邻接表如右图所示,则从节 点 为 0 出 发 的 深 度 优 先 遍 历 序 列 。
0 1 2 3
。 个。
8、对于有 n 个节点 e 条边的有向图,求最短路径的 Dijkstra 算法的时间复杂度为( A、O(n) B、O(n+e) C、O(n2) D、O(ne)
) 。
9、对数据{84,47,25,15,21}排序,数据的排列次序在排序过程中的变化如下所示,则采 用的排序方法是( 84,47,25,15,21 15,47,25,84,21 15,21,25,84,47 15,21,25,47,84 A、简单选择排序 C、冒泡排序 B、快速排序 D、直接插入排序 ) 。
一、 选择题(每小题 2 分,共 20 分)
得分 评卷人

计算机数据结构考试题及答案

计算机数据结构考试题及答案

全真模拟试题(一)一、单项选择题(在每小题的4个备选答案中,选出正确的答案,并将其号码填在题干的括号内。

每小题2分,共24分)1.若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。

①单链表②双链表③单向循环④顺序表2.串是任意有限个()①符号构成的序列②符号构成的集合③字符构成的序列④字符构成的集合3.设矩阵A(aij ,l≤i,j≤ 10)的元素满足:aij≠0(i≥j, l≤i, j≤ 10)aij=0 (i<j, l≤i, j≤ 10)现将A的所有非0元素以行序为主序存放在首地址为2000的存储区域中,每个元素占有4个单元,则元素A[9][5]的首址为①2340 ②2336 ③2164 ④21604.如果以链表作为栈的存储结构,则退栈操作时()①必须判别栈是否满②对栈不作任何判别③必须判别栈是否空④判别栈元素的类型5.设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为()①front=front+1 ②front=(front+1)% m③rear=(rear+1)%m ④front=(front+1)%(m+1)6.深度为6(根的层次为1)的二叉树至多有()结点。

①64 ②32 ③31 ④637.将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为1。

编号为49的结点X的双亲编号为()①24 ②25 ③23 ④无法确定8.设有一个无向图G=(V,E)和G’=(V’,E’)如果G’为G的生成树,则下面不正确的说法是()①G’为G 的子图②G’为G 的边通分量③G’为G的极小连通子图且V’=V④G’为G的一个无环子图9.用线性探测法查找闭散列表,可能要探测多个散列地址,这些位置上的键值()①一定都是同义词②一定都不是同义词③都相同④不一定都是同义词10.二分查找要求被查找的表是()①键值有序的链接表②链接表但键值不一定有序③键值有序的顺序表④顺序表但键值不一定有序11.当初始序列已经按键值有序,用直接插入算法对其进行排序,需要循环的次数为()①n2 ②nlog2n ③log2n ④n-112.堆是一个键值序列{k1,k2,…, kn},对i=1,2,…,|_n/2_|,满足( )①ki≤k2i≤k2i+1②ki<k2i+1<k2i③ki≤k2i且ki≤k2i+1(2i+1≤n)④ki≤k2i 或ki≤k2i+1(2i+1≤n)二、判断题(判断下列各题是否正确,正确在括号内打“V”,错的找“X”。

数据结构模拟题(开卷)

数据结构模拟题(开卷)

数据结构模拟题(开卷)《数据结构》模拟题(开卷)⼀、单项选择题1.分析下列算法suanfa1(n):void suanfa1(int n){ int i,j,x=1;for(i=0;ifor(j=0;jx=x*2;printf("%d",x)}其中语句"x=x*2;"的执⾏次数是( D )。

A.(n*2)2B.(n-1)2C.(n+1)2D.n22.折半查找有序表(16,20,30,35,40,46,60,80),若查找元素80,需依次与表元素( D )进⾏⽐较。

A.35,46,80B.40,60C.40,60,80D.35,46,60,803.对长度为10的表作选择(简单选择)排序,共需⽐较( A )次关键字。

A.45B.90C.10D.1104.下列算法suanfa2(n)的时间复杂度为( A )。

int suanfa1(int n){ int i,x=0;for (i=0;i<5;i++)for (j=1;j<=n;j++)x+=2;return x;}A.O(n)B.O(n5)C.O(5n)D.O(n2)5.线性表在( B )时, 宜⽤顺序表作存储结构。

A.经常作插⼊、删除B.经常随机存取C.⽆⾜够连续存储空间D.经常作动态查找6.设⼴义表LS=((a,b),c,(d,e)),执⾏操作GetTail(GetHead(LS))后的结果是( A )。

A.(b)B.bC.(c,(d,e))D.(a,b)7.深度为k的满⼆叉树有( C )个叶⼦。

A.k2-1B.2K-1-1C.2K-1D.k28.有16个顶点的⽆向图最多可能有( D )个连通分量。

A.32B.8C.256D.169. ( C )是'Hua**Zhong**Da'的⼦串。

A.HuaB.zhongC.'*Da'D.'HuaZhongDa'10.字符串的长度指的是串中( B )的个数。

(完整版)数据结构复习题(附答案)

(完整版)数据结构复习题(附答案)

一、算法设计题(每题15分,共60分)答题要求:①用自然语言说明所采用算法的思想;②给出每个算法所需的数据结构定义,并做必要说明;③写出对应的算法程序,并做必要的注释。

1、有一个带头结点的单链表,每个结点包括两个域,一个是整型域info,另一个是指向下一个结点的指针域next。

假设单链表已建立,设计算法删除单链表中所有重复出现的结点,使得info域相等的结点只保留一个。

3、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个人按顺时针方向围坐成一圈,现从第s个人开始按顺时针方向报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…,如此重复直到所有的人全部出列为止。

现要求采用循环链表结构设计一个算法,模拟此过程。

4、编程实现单链表的就地逆置。

23.在数组 A[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个.5、设计一个尽可能的高效算法输出单链表的倒数第K个元素。

3、假设以I和O分别表示入栈和出栈操作。

栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。

(15分)(1)下面所示的序列中哪些是合法的?A. IOIIOIOOB. IOOIOIIOC. IIIOIOIOD. IIIOOIOO(2)通过对(1)的分析,写出一个算法,判定所给的操作序列是否合法。

若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。

5、设从键盘输入一整数的序列:a1, a2, a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。

算法应对异常情况(入栈满等)给出相应的信息。

设有一个背包可以放入的物品重量为S,现有n件物品,重量分别为W1,W2,...,W n。

《数据结构》四川大学_期终复习试题+答案

《数据结构》四川大学_期终复习试题+答案

四川大学“精品课程”计算机科学与技术专业(本科)《数据结构与算法分析》课程考试说明与模拟试卷第一部分考试说明数据结构与算法分析》是计算机科学与技术专业统设的一门重要的必修专业基础课,它主要研究数据的各种逻辑结构和在计算机中的存储结构,还研究对数据进行的插入、查找、删除、排序、遍历等基本运算或操作以及这些运算在各种存储结构上具体实现的算法。

由于本课程的主教材采用C++语言描述算法,期末卷面考试也采用C++语言描述,因而要求在做平时作业和上机实验操作时用C++开发工具(如:Visual C++或C++ Builder或Borland C++)。

下面按照主教材中各章次序给出每章的具体复习要求,以便同学们更好地进行期末复习。

第一章绪论重点掌握的内容:1. 数据结构的二元组表示,对应的图形表示,序偶和边之间的对应关系。

2. 集合结构、线性结构、树结构和图结构的特点。

3. 抽象数据类型的定义和表示方法。

4. 一维和二维数组中元素的按下标和按地址的访问方式以及相互转换,元素地址和数组地址的计算,元素占用存储空间大小和数组占用存储空间大小的计算。

5. 普通函数重载和操作符函数重载的含义,定义格式和调用格式。

6. 函数定义中值参数和引用参数的说明格式及作用,函数被调用执行时对传送来的实际参数的影响。

7. 算法的时间复杂度和空间复杂度的概念,计算方法,数量级表示。

8. 一个简单算法的最好、最差和平均这三种情况的时间复杂度的计算。

对于本章的其余内容均作一般掌握。

第二章线性表重点掌握的内容:1. 线性表的定义及判别和抽象数据类型的描述,线性表中每一种操作的功能,对应的函数名、返回值类型和参数表中每个参数的作用。

2. 线性表的顺序存储结构的类型定义,即List类型的定义和每个域的定义及作用。

3. 线性表的每一种运算在顺序存储结构上实现的算法,及相应的时间复杂度。

4.链接存储的概念,线性表的单链接和双链接存储的结构,向单链表中一个结点之后插入新结点或从单链表中删除一个结点的后继结点的指针链接过程。

C++数据结构与算法上机练习题

C++数据结构与算法上机练习题

Bracket Matching
时间限制:1 秒 内存限制:256 兆 题目描述 检查输入字符串中的括号是否匹配。括号包括:{, }, (, ), [, ]. 输入格式 第一行是一整数,即测试样例个数 n. 以下 n 行,每一行是一个长度不超过 100 个字符的字符串。 输出格式 第一行是一整数,即测试样例个数 n. 以下 n 行,每一行是一个长度不超过 100 的字符串。 样例输入 3 a 2-[(1+2)*2] (a+b]) 样例输出 Yes Yes
while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl; } } void ReverseList(LinkedNode* pCur,LinkList& ListHead) { if( (NULL==pCur)||(NULL==pCur->next) ) { ListHead=pCur; } else { LinkedNode* pNext=pCur->next; ReverseList(pNext,ListHead); //递归逆置后继结点 pNext->next=pCur; //将后继结点指向当前结点。 pCur->next=NULL; } } int main() { int a[N]={1,2,3,4,5,6}; LinkedNode* list=CreateList(a); PrintList(list); LinkedNode*pTemp=list; ReverseList(pTemp,list); PrintList(list); return 0; }
数据结构练习题: 单链表的逆置 题目描述 实现单链表的逆置 输入格式 输入需要逆置的字符串 输出格式 第一行输出逆置前的字符串 第二行输出逆置后的字符串 样例输入 abcdefg 样例输出 abcdefg gfedcba #include<iostream> using namespace std; const int N=6; typedef int DataType;//类型定义 typedef struct node{ //单链表 DataType data; struct node* next; }LinkedNode,*LinkList; /****由数组创建单链表****/ LinkList CreateList(DataType a[N]) { LinkedNode* ListHead=new LinkedNode(); ListHead->data=a[0]; ListHead->next=NULL; for(int i=N-1;i>=1;i--) { LinkedNode* p=new LinkedNode(); p->data=a[i]; p->next=ListHead->next; ListHead->next=p; } return ListHead; } /****输出单链表****/ void PrintList(LinkList ListHead) { if(NULL==ListHead)cout<<"The List is empty!"<<endl; else { LinkedNode* p=ListHead;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5
《数据结构与算法》模拟题
一、填空题:(共15分)(每空一分)
1. 按照排序时,存放数据的设备,排序可分为<1>内部 排
序和<2> 外部 排序。

2. 图的常用的两种存储结构是<3> _____和<4

邻接表面存储。

3. 数据结构中的三种基本的结构形式是<5> x 线性结构
和<6> 树形结构 __________ 、<7> 图形结构
线性查找的时间复杂度为:<9>
,折半查找的时 间复杂度为:<10> "口3 、堆分类的时间复杂度
6. 在采用散列法进行查找时,为了减少冲突的机会,散列函数 必须
具有较好的随机性,在我们介绍的几种散列函数构造法 中,随机性最好的是<12>随机数 法、最简单的构造方法
是<13> 除留余数法 。

7. ______________________________________________ 线性表的三种存储结构是:数组、<14> 链表 __________________
静态链表 _______ 。

一个高度为6的二元树,最多有<8> 63 _______ 个结点 4. 5. 为: <11>
O(nlo^n)
<15>
二、回答下列问题:(共30分)
1. 现有如右图的树,回答如下问题:
A)根结点有:
6
B)叶结点有:
C)具有作大度的结点:9和10
D)结点的祖先是:0和2
E)结点的后代是:10
2. 栈存放在数组A[m]中,栈底位置是m-1。

试问:
A)栈空的条件是什么?
B)栈满的条件是什么?
A)栈空的条件是什么?top=m-l
B)栈浦的条件是什么?栈满top=0
3. 数据结构和抽象数据型的区别与联系:
数据结构,是相互之间存在一种或多种特定关系的数据元素的集合。

数据元素相互之间的关系称为结构口
抽象数据类型:是指一个数学模型〔数据结构)以及定文在该模型(数据结构)上的一组操作。

4. 已知一株非空二元树,其先根与中根遍历的结果为:
先根:ABCDEFGHI
中跟:CBEDAGFHI
将此二元树构造出来。

分析下列程序的运行时间: A) void mystery(int n)
{int i, j, k;
for(i=1; i<n; i++) for(j=i+1; j<=n; j++) for(k=1; k<=j; k++)
{some statement requiring 0(1) time;} }
4, O(n A 3)+O(1)
这个应该是时间复杂度吧:0(0^3)
B ) void podd(int n) {int I, j, x, y;
for(I=1; I<=n; I++) if( odd(I ))
{for(j=I; j<=n; j++)
x=x+1;
for(j=1; jv=l; j++)
y=y+1; } }
5.
E
J \ l"L ~~T~ "ZTi I JE1L1 ■七 Z
-=巴—.m_L 湮二1
O (n A2)
6.已知数学表达式是(3+b)sin(x+5)—a/x二求该表达式的波兰
表示法的前缀和后缀表示(要求给出过程)。

农达式对应的二址树为
所以对应的前缀为:_*+3hsin+x5/a*xx
后缀为:3b+ x5+si n*rixx*/-
我感觉它的前缀表示法为-*+3bSIN+x5*/ax0.5, 后缀表示法
为3b+x5+SIX*ax/0.5*-
三、实现下列算法:(共3 0分)
1.在指针实现的线性表L中,实现在线性表L中删除关键字为x的
结点。

(共7分)
intdelete V T al ueL i si( stmctL ist*L.el eniTypex)
{
intij;
严从线性蔻中顺字查找出值为x的第一个元素和for(i=0
311
J<L->size;i++) {
if(L*>list[i]=x){
break;
}
}
严若查找失败,表明下存在值为工的元素,返回0*/
if(i=L->size){
retumO;
}
厲删除值为x的元素L->list[i]*/
for(j J<L->si ze;j ++){
L->size—:
retunil:
2.
3. 设有如下图的双向环形链表L=(a, b, c, d)。

请写出将该表转
换为L=(b, a, c, d)的简单操作。

(共7分)
那 4 血(Jt 5 (H)
学号:
d
LL D RL
L->RL*>RL 二D->RL ; D->RL = L*>RL; LiRL->LL^>RL=D->LL;
D->LL=L->RL->LL^>LL;
L->Rl^D; 对下両的带权连通无向图.用Prim (普里
4. 在线索二元树中,由结点P求其先根顺序的后继。

(共8分)先根:ABCDEFGHI
中跟:CBEDAGFHI
将此二元树构造出来。

遍历的基本方法:先左子树后右子树。

1, 先根遍历可以确定根节点为A,
2, 依据1步,可以在中根遍历中确定左子树为:CBED右为:GFHI
3, 在可以重复1,2步。

就可以得到结果。

A
B F
C D G H
I I
4, 0(门人3)+0(1)
5. 在二元查找树F 中,实现插入记录F 。

(共8分)
三、1XSLR1S 作的实现 戶二元査
找树F 的类型定义*/ \nid ItiscrtBST I records R . BS 1 /*在二元查找树F 中插入新记录R { if< r —xri-i ) {
F=new HSTNode ;
= R ;
I ->J€hild -M I L; F->rc]iild = SVI I :
i
否则.新插入的结点必为 f ke if ( R-kcy < h>data.key )
InsertBSTf R,F-XcMld); else if ( RAr 、> 2dm.ky )
InsertBSK R . R>rchild ): /* 7i :R.key=F<>data.key, UJiS/1' *■'
盼尔滨二业九学计律机科学与強庭学琉ai
—个新的叶■子结点匸 新插入的结点一述是査 找不成功讨.査找舅斥 上最后一牛结点的左儿 子或右儿子.
新咼入的给*为以蛀.占I
t^'pedef int kcyt) pc:
B peJef struct edit) pe { records dnta :
struct eelltype *khild,*rehild ; } BSTNode ;
typedef UST\ode * BSI ;
BST CroteBST ( void ) { BST F=M I I.: 始时F 为空引 kevn pe kev:
*
*厂
V
£in»kcy»其地字段:%读入一个记录1 林hil
側key ){/*假设Ay =0是输入结束标志*7
IuertHST(R t F);戶插入记录R */
cin»kev»苴他余段严读入=个记录巧’
} _
return I :由返冋建立的二元査找树的根喪
呛尔滨二"大学汁"科学与欣尺学E ui
四、二元査找树的建立 注意:在建立二元査找 树酸、若按关谨字有宇 咂序粒入齐记录.则产 生退化的二元査找+4— 单链表=
如何防止?
延札縫入鼻结点
在建立、挤入和 划除齐結点过程 中平疫相关结点 的左、右子树.
四、对下面的带权连通无向图,用Prim (普里姆)算法,构造株最小生成树。

画出构造过程的每一步。

(12分)
学号:
姓名:
28 ②”
第11页(共12
2少%
22
28 14 6
中。

要进行堆分类,首先得为其建立一个初始堆,试画出初始建堆过程中,二元树的变化和数组A的变化。

(共13分)
第12页(共12。

相关文档
最新文档