设有一个栈,元素的进栈次序为abcde
2013新疆维吾尔自治区数据结构与算法最新考试试题库

6、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一
C)不含回路 D)有n条边
7、线索二叉树中某结点D,没有左孩子的条件是( B )。
A)栈 B) 二叉树
C) 广义表 D) 图
43、若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接矩阵是一个( D )。
A)上三角矩阵 B) 稀疏矩阵
C) 对角矩阵 D) 对称矩阵
B) B, C, D, E, A
C) E, A, B, C, D
D) E, D, C, B, A
3、在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为( B )。
A) rear=rear->next; B) front=front->next;
A)动态结构和静态结构 B)紧凑结构和非紧凑结构
C)线性结构和非线性结构 D)内部结构和外部结构
22、在数据结构中,从逻辑上可以把数据结构分为( C )。
A)动态结构和静态结构 B)紧凑结构和非紧凑结构
C)线性结构和非线性结构 D)内部结构和外部结构
44、广义表head(((a,b),(c,d)))的运算结果为( A )。
A)(a,b) B)(c,d)
C)空表 D)((a,b),(c,d))
45、队列的操作的原则是( A )。
A)先进先出 B) 后进先出
C) D->Rchild=Null D) D->ltag=0
11、栈进行插入和删除操作的特点是( A )。
A)LIFO B)FIFO
C)FCFS D)HPF
数据结构习题

数据结构习题C语言的数据结构和算法算法:快速排序BST:二叉查找树 (3)20.如果最常用的操作是取第i个结点及其前驱,则采用 D 存储方式最节省时间。
A.单链表B.双链表C.单循环链表D.顺序表21.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是B 。
A.O(1)B.O(n)C.O(n2)D.O(nlog2n)22.在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行 B 操作与链表的长度有关。
A.删除单链表中的第一个元素B.删除单链表中的最后一个元素C.在单链表第一个元素前插入一个新元素D.在单链表最后一个元素后插入一个新元素23.与单链表相比,双链表的优点之一是 D 。
A.插入、删除操作更简单B.可以进行随机访问C.可以省略表头指针或表尾指针D.顺序访问相邻结点更灵活24.如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用 B 。
A.只有表头指针没有表尾指针的循环单链表B.只有表尾指针没有表头指针的循环单链表C.非循环双链表D.循环双链表25.在长度为n的顺序表的第i个位置上插入一个元素(1≤i ≤n+1),元素的移动次数为:A 。
A.n –i + 1 B.n –i C.i D.i –126.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为 C 。
A.顺序表B.用头指针表示的循环单链表C.用尾指针表示的循环单链表D.单链表27.下述哪一条是顺序存储结构的优点? C 。
A插入运算方便B可方便地用于各种逻辑结构的存储表示C存储密度大D删除运算方便28.下面关于线性表的叙述中,错误的是哪一个? B 。
A线性表采用顺序存储,必须占用一片连续的存储单元B线性表采用顺序存储,便于进行插入和删除操作。
C线性表采用链式存储,不必占用一片连续的存储单元D线性表采用链式存储,便于进行插入和删除操作。
29.线性表是具有n个 B 的有限序列。
数据结构(C++版)课后答案_(王红梅)第3章_特殊线性表

⑻ 设数组 S[n]作为两个栈 S1 和 S2 的存储空间,对任何一个栈只有当 S[n]全满时才不能进行进栈操作。为这两个栈 分配空间的最佳方案是( )。 A S1 的栈底位置为 0,S2 的栈底位置为 n-1 B S1 的栈底位置为 0,S2 的栈底位置为 n/2 C S1 的栈底位置为 0,S2 的栈底位置为 n D S1 的栈底位置为 0,S2 的栈底位置为 1 【解答】A ⑼ 设有两个串 p 和 q,求 q 在 p 中首次出现的位置的运算称作( )。 A 连接 B 模式匹配 C 求子串 D 求串长 【解答】B
⑷ 设计一个判别表达式中左右括号是否配对的算法,采用( )数据结构最佳 A 顺序表 B 栈 C 队列 D 链表 【解答】B
⑸ 在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个( )结构。 A 栈 B 队列 C 数组 D 线性表 【解答】B
⑹ 一个队列的入队顺序是 1,2,3,4,则队列的输出顺序是( )。 A 4321 B 1234 C 1432 D 3241 【解答】B
5. 举例说明顺序队列的“假溢出”现象。 【解答】假设有一个顺序队列,如图 3-6 所示,队尾指针 rear=4,队头指针 front=1,如果再有元素入队,就会产生“上 溢”,此时的“上溢”又称为“假溢出”,因为队列并不是真的溢出了,存储队列的数组中还有 2 个存储单元空闲,其下标 分别为 0 和 1。
⑷ 对于采用顺序存储结构的串 S,编写一个函数删除其值等于 ch 的所有字符。 【解答】从后向前删除值为 ch 的所有元素,这样所有移动的元素中没有值为 ch 的元素,能减少移动元素的次数,提 高算法的效率。算法如下:
数据结构期末考试题及答案

2012年数据结构期末考试题及答案一、选择题1.在数据结构中,从逻辑上可以把数据结构分为C。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.数据结构在计算机内存中的表示是指A。
A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的A结构。
A.逻辑B.存储C.逻辑和存储D.物理4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储C。
A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法5.在决定选取何种存储结构时,一般不考虑A。
A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。
6.以下说法正确的是D。
A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构7.算法分析的目的是C,算法分析的两个主要方面是A。
(1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性8.下面程序段的时间复杂度是O(n2)。
s =0;for(I =0;i<n;i++)for(j=0;j<n;j++)s +=B[i][j];sum =s ;9.下面程序段的时间复杂度是O(n*m)。
for(i =0;i<n;i++)for(j=0;j<m;j++)A[i][j] =0;10.下面程序段的时间复杂度是O(log3n)。
i =0;while(i<=n)i =i * 3;11.在以下的叙述中,正确的是B。
A.线性表的顺序存储结构优于链表存储结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着B 。
数据结构试卷(A)答案

运算机系2010年—2011年第一学期期末考试题(卷)《数据结构》试题A(卷)参考答案和评分标准一、选择题(每题2分,共40分)。
1.线性表假设采纳链式存储结构时,要求内存中可用存储单元的地址(D )A.必需是持续的B.部分地址必须是连续的C.必然是不持续的D.连续不连续都可以2. 链表不具有的特点是( C )A.随机访问B.不必事先估计存储空间C.插入删除时不需移动元素D.所需空间与线性表成正比3.设有编号为1,2,3,4的4辆车,顺序进入一个栈结构的站台,以下不可能的出站顺序为( D )A.1234 B.1243 C.1324D.14234.顺序栈存储空间的实现利用(B )存储栈元素。
A.链表B.数组C.循环链表D.变量5.初始化一个空间大小为5的顺序栈S 后,S->top的值是( B )A.0 B.-1 C.再也不改变D.动态变化6.队列是限定在( D )进行操作的线性表。
A.中间B.队首C.队尾D.两端7.引发循环队列队头位置发生转变的操作是(A )。
A.出队B.入队C.取队头元素D.取队尾元素8.以下论述正确的选项是(C )A.空串与空格串是相同的B.”tel”是”Teleptone”的子串C.空串是零个字符的串D.空串的长度等于19.串的模式匹配是指(D )A.判定两个串是不是相等B.对两个串比较大小C.找某字符在主串中第一次显现的位置D.找某子串在主串中第一次显现的第一个字符位置=”morning”,执行求子串函数SubStr(S,2,2)后的结果为( B )A.”mo”B.”or”C.”in”D.”ng”11.设高度为h的二叉树上只有度为0和度为2的结点,那么此类二叉树中所包括的结点数至少为( B )A.2h B.2h-1 C.2h+1 D.h+112.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是( D )A.acbed B.decabC.deabc D.cedba13. 按照二叉树的定义,具有3个结点的二叉树有( C )种。
栈--作业

2017年3月28日作业(把日期写在作业本上)淮南师范学院网络工程专业一、选择题1.若进栈序列为a,b,c,d,进栈过程中可以出栈,则 C 不可能是一个出栈序列。
A) a,d,c,b B) b,c,d,a C)c,a,d,b D) c,d,b,a2.设用一维数组A[1,…,n]来存储一个栈,令A[n]为栈底,用整型变量T指示当前栈顶位置,A[T]为栈顶元素。
当从栈中弹出一个元素时,变量T将变化为 A 。
A) T=T + 1 B) T=T – 1 C) T不变 D) T= n3. 一个栈的入栈序列为a,b,c,d,e,则栈不可能的出栈序列是C 。
A) e d c b a B) d e c b aC) d c e a b D) a b c d e4.一个队列的入队序列是1,2,3,4,则队列的输出序列是 C 。
A) 1,4,3,2 B) 4,3,2,1C) 1,2,3,4 D) 3,2,4,15.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈,一个元素出栈后立即进入队列Q,若6个元素出队的顺序是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是 C 。
A) 4 B) 6 C) 3 D) 2二、应用题1、设有一个栈,元素进栈的次序为A,B,C,D,E,写出下列出栈序列的操作序列。
(1)CBADE(2)ACBED,其中I为进栈操作,O为出栈操作。
(1)iiioooioio (2)ioiiooiioo中间留空行!!!!!!2017年3月30日作业(把日期写在作业本上)一、选择题1.有6个元素按6,5,4,3,2,1的顺序进栈,以下序列中,不合法的出栈序列是 A 。
A) 3,4,6,5,2,1 B) 5,4,3,6,1,2C) 2,3,1,4,5,6 D) 4,5,3,1,2,62.栈和队列都是 a 。
A) 限制存取点的线性结构 B) 限制存取点的非线性结构C) 顺序存储的线性结构 D) 链式存储的线性结构二、填空题1、用P表示入栈操作,D表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的P和D的操作串为PDPPDPDD 。
2015山西省数据结构(C++)理论考试试题及答案

C)空表 D)((a,b),(c,d))
38、设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列是( C )。
A) A, B, C, D, E
C)查找 D)定位
9、下面程序段的时间复杂度是( A )。
s =0;
for( i =0; i<n; i++)
for(j=0;j<n;j++)
s +=B[i][j];
sum = s ;
A) O(n2) B) O(n)
A)必须是连续的 B)连续不连续都可以
C)部分地址必须是连续 D)必须是不连续的
5、如果结点A有3个兄弟,而且B为A的双亲,则B的度为( B )。
A)3 B)4 C)5 D)1
6、下面关于线性表的叙述中,错误的是哪一个?( D )
C) O(m*n) D)O(1)
10、下列序列中,执行第一趟快速排序后得到的序列是( A )。
A)[d,a,e,d,b]f[h,g] B) [c,e,a,d]f[h,g,b]
C) [g,a,e,c,b]f[d,h] D) [a,b,c,d,]f[e,g,h]
1、用一维数组A进行顺序存储时,若起始地址为loc(A1),元素长度为c,则A的第i个数组单元在存放地址loc(Ai),等于( B )。
A)loc(A1)+i*c B)loc(A1)+(i-1)*c
C)loc(A1)+i*c+1 D)loc(A1)+(i+1)*c
A)9 B)11 C)15 D)不能确定
23、n个顶点的强连通图至少有( A )条边。
2010陕西省数据结构一点通科目一

9、倘若在对串的插入、删除运算中,期望运算速度最快,则应采用( C )。
A)顺序表示法 B)单字符为结点的单链表表示法
C)等量分块表示法 D)不等量分块表示法
sum = s ;
A) O(n2) B) O(n)
C) O(m*n) D)O(1)
20、链式存储的存储结构所占存储空间( A )。
A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B)只有一部分,存放结点值
17、对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。这样的排序方法是( A )。
A)直接选择排序 B)直接插入排序
C)快速排序 D)起泡排序
18、已知栈的最大容量为4。若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( C )。
A) 5,4,3,2,1,6 B) 2,3,5,6,1,4
C) 3,2,5,4,1,6 D) 1,4,6,5,2,3
19、下面程序段的时间复杂度是( A )。
s =0;
for( i =0; i<n; i++)
for(j=0;j<n;j++)
s +=B[i][j];
C)删除运算方便 D)可方便地用于各种逻辑结构的存储表示
31、串的逻辑结构与( D )的逻辑结构不同。
A)线性表 B)栈
C)队列 D)树
32、数据结构中,在逻辑上可以把数据结构分成( B )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设有一个栈,元素的进栈次序为abcde 栈的基本特点:
1、先入后出,后入先出。
2、除头尾节点之外,每个元素有一个前驱,一个后继。
栈的数据结构是一个后进先出的结构,你可以简单的吧abcde理解成5个羽毛球,栈就是放羽毛球额球筒,进栈(S)操
作就是拿一个球放进球筒,出栈(X)操作就是拿出球筒最上面
的一个球在你这个题目中最后得到的出栈顺序结果是b,c,e,d,a具体的每一次操作如下:所谓知己知彼,百战不殆,今天
就和大家聊聊互联网公司那些最常见的面试算法题。
清点面试算法题之前我们先要明确面试官考察的目的,比如有一道经典考题是“怎么用3升和5升的桶量出4升的水?”
其实这道题的答案并不难,但是对于面试官,可以通过这道题考察的内容就比较丰富了。
一、概括一下面试算法的目的
1、基础知识储备量考察知识储量是面试算法最基本的目的,但是直接考察算法基础已经很少出现在实际面试中了,需要快速筛选面试者的时候才会用到。
2、思考方向有的算法可能有两个甚至多个答案,这时面试官就不是单纯的考察面试者的知识储备量了,通过面试者的答案可以看出面试者的思考方向,符合公司的日常工作需求才是“有缘人”。
3、解决问题能力能不能解出答案是次要的,分析和解决问题的思路才是面试官考察的根本所在。
4、辅助能力算法是整个计算机领域里最基础的学科,其余大部分的学科和技能都是在算法的基础上展开的,所以这类考察实则是考察面试者能否快速融入工作当中。
总的来说,算法题是综合考察面试者思维逻辑和基础知识的好办法。
二、算法面试题的类型虽然面试算法题层出不穷,但从算法的类型来看,互联网公司最常见的面试算法题分以下几种。
1、基础算法基础算法主要有大数据查找、、哈希算法解决等。
以针对搜索来讲,可能设计一个数据库表内包含名字、课程、分数3列,求所有课程最低分不小于80分的名单,如果要求用SQL表达,就是对于基础知识点和基本功的考察。
另外可能还会涉及一些计算机网络的TCP三次握手协议等基础的算法考察。
例如2017京东校招的排序题目:对关键字{
10,
8,
25,
35,
6,
18,
30,
5,
15,28}序列进行希尔排序,取增量d =5时,排序结果为()A. {
6,
18,
8,
5,
15,
10,
30,
25,
35,28}B. { 10,
18,
8,
5,
15,
6,
20,
30,
25,
35,28}C. { 10,
20,
5,
15,
6,
18,
30,
25,
35,28}D. { 10,
20,
30,
5,
8,
6,
15,
18,
28,35}1) 用简单取巧的,标记原始关键字为abcdeabcdea,那么a对应的数字就是
10,
6,
28,排序后就是
6,
10,
28,所以答案就是A。
2) 当然也可以用代码去实现,更考验技术含量,就像下
面的JAVA实现。
public class ShellSort { public static void main(String [] args) { int[]a={
49,
38,
65,
97,
13,
27,
49,
78,
34,
12,
64,1}; System.out.println("排序之前:"); for(int
i=0;i<a.length;i++) { System.out.print(a[i]+" "); } //希尔排序 int d=a.length; while(true){ for(int i=0;i<d;i++){ for(int
j=i;j+d<a.length;j+=d){ int temp; if(a[j]>a[j+d]){ temp=a[j];
a[j]=a[j+d]; a[j+d]=temp; } } } if(d==1){break;} d--; } System.out.println(); System.out.println("排序之后:"); for(int
i=0;i<a.length;i++) { System.out.print(a[i]+" "); } } }
2、数据结构基础数据结构更多的出现在应届生校招和笔试环节中,这类面试题涉及到链表、堆、栈、队列、图、二叉树等。
比如2018年科大讯飞的笔试题:下面关于二叉排序树的说法错误的是()A. 在二叉排序树中,完全二叉树的查找效
率最低B. 对二叉排序树进行中序遍历,必定得到节点关键字
的有序序列C. 二叉排序树的平均查找长度是O(log2n)
D. 二叉排序树的查找效率与二叉树的树形有关通过二叉
排序树,可以发现完全二叉树的查找效率最高,故答案选A。
3、灵活解决问题的算法灵活解决问题的算法在面试中占
据了相当重要的地位,这类题不告诉面试者具体需要用什么算法,而是虚构一个问题,让你找出具体的解决方案。
比如腾讯优图的面试题:给你8颗小石头和一架天平,其中7颗石头重量是一样的,另外一个比这7颗略重。
请问在最坏的情况下,最少要称量几次,才能把这颗最终的石头找出来?
最简单的方法是挑出两颗,把剩下6颗分成两份称重,如果一样重,则再称一下挑出的那两颗即可,如果不一样重,排除较轻的三颗,剩下3颗挑一颗出来,称其余两颗。
如果一样重,则挑出的那颗便是,如果不一样重,重的那颗便是。
所以答案是两次。
淘宝的面试题:假设淘宝一天有5亿条成交数据,求出销量最高的100个商品并给出算法的时间复杂度。
看似是考察查找算法的,但是因为询问了时间复杂度,所以要多想一步,如何优化?针对具体问题,可以把5亿条数据分组来存放,这样就可以分别在每个文件的个数据中,用哈希以及堆来统计每个区域内前100个频率最高的商品,最后求出所有记录中出现频率最高的前100个商品。
4、岗位需要的具体算法这一类型的考察比较深入,以自
然语言处理(NLP)岗位为例,在算法考察的过程中肯定不会简单的考察搜索等问题,可能直接考察word2vec的huffman tree 和negative sampling的目的是什么,另外还有机器研究领
域的AUC曲线、PRF值能衡量什么等问题。
比如阿里巴巴机器研究算法面试:研究过程中出现过拟合现象该怎么办?
1)重新清洗数据,有可能是因为数据不纯导致的过拟合。
2)增大数据的训练量,用于训练的数据量可能太小。
3)采用正则化方法,包括L0正则、L1正则和L2正则,在机器研究中一般使用L2正则。
4)采用dropout,这个方法在神经网络里面很常用,通俗
一点讲就是在训练的时候让神经元以一定的概率不工作。
当然不同的简历、不同的面试官都会导致问题的侧重有所区别,但万变不离其宗,尤其是前两种最常见的算法,一定不可以大意。
三、应对算法面试的解决方案总结一下方,面试之前可以参考下面几个来提高面试成功的概率。
2、视频手把手教学很多技巧性的东西是书本上难以描述
清楚的,但通过视频研究可以准确领悟老师的思想,比如慕课
网上应对面试算法题的课程视频就有很多,“玩转算法面试leetcode题库分门别类详细解析”、“程序猿的内功修炼,学好算法与数据结构”以及“看的见的算法 7个经典应用诠释算法精髓”,一线老师手把手为你揭秘算法面试的诀窍,这比自己领悟要来的快得多。
3、日常练习实践纸上得来终觉浅,绝知此事要躬行。
平时有时间一定要多刷一刷 leetcode、hihocoder,这这两个算法习题网站上很多题目思考起来还是很有意思的,也非常有代表性,因为在面试算法的过程中经常有要求现场码代码,虽然说不用完全按照编程语言的语法来写,但不勤加练习的话,也很难在现场完美表现。
最后提醒各位面试者:从面试算法题中找出“正确”回答固然重要,但是面试官更想从中看到面试者合理的思考方向,而且算法面试优秀不意味着能够拿到Offer,想要得到心仪公司的Offer还是要脚踏实地学好每项技能,到时无论是什么考察都将是小菜一碟。
最后祝各位面试的程序员早日找到心仪的工作~。