2017年数据结构面试试题附答案

合集下载

2017大数据面试题及答案

2017大数据面试题及答案

2017大数据面试题及答案来源:扣丁学堂2017年有不少大数据学员学成准备参加工作,在参加工作前最重要的一轮就是大数据的面试,小编收集了一些2017大数据面试题及答案,希望可以帮到准备或者正在参加大数据面试的朋友们。

1. 下面哪个程序负责 HDFS 数据存储。

答案C datanodea)NameNodeb)Jobtrackerc)Datanoded)secondaryNameNodee)tasktracker2. HDfS 中的 block 默认保存几份? 答案A默认3分a)3 份b)2 份c)1 份d)不确定3. 下列哪个程序通常与 NameNode 在一个节点启动?答案Da)SecondaryNameNodeb)DataNodec)TaskTrackerd)Jobtracker此题分析:hadoop的集群是基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slave有多个SecondaryNameNode内存需求和NameNode在一个数量级上,所以通常secondary NameNode(运行在单独的物理机器上)和NameNode运行在不同的机器上。

JobTracker和TaskTrackerJobTracker 对应于 NameNodeTaskTracker 对应于 DataNodeDataNode 和NameNode 是针对数据存放来而言的JobTracker和TaskTracker是对于MapReduce执行而言的mapreduce中几个主要概念,mapreduce整体上可以分为这么几条执行线索:obclient,JobTracker 与TaskTracker。

1、JobClient会在用户端通过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,并把路径提交到Jobtracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。

php数据结构面试题及答案(3篇)

php数据结构面试题及答案(3篇)

第1篇一、选择题1. 问题:在PHP中,以下哪个数据结构允许你以任意顺序存储元素?- A. 数组- B. 队列- C. 栈- D. 链表答案:A. 数组解析:在PHP中,数组是一种非常灵活的数据结构,它允许你以任意顺序存储元素。

每个元素可以通过一个键来访问,这个键可以是数字或者字符串。

2. 问题:以下哪个函数可以用来检查一个PHP数组是否为关联数组?- A. is_array()- B. array_keys()- C. is_associative()- D. array_is_associative()答案:D. array_is_associative()解析:PHP 7.1.0引入了`array_is_associative()`函数,该函数可以用来检查一个数组是否为关联数组。

如果是关联数组,返回`true`;如果是索引数组,返回`false`。

3. 问题:以下哪个PHP函数可以用来检查一个值是否在数组中?- A. in_array()- B. array_key_exists()- C. isset()- D. array_search()答案:A. in_array()解析:`in_array()`函数用来检查一个值是否存在于数组中。

它接受两个参数:要查找的值和要检查的数组。

二、填空题1. 问题:在PHP中,使用`[]`可以创建一个______数组。

- 答案:索引数组2. 问题:在PHP中,使用`array()`函数可以创建一个______数组。

- 答案:关联数组3. 问题:在PHP中,要遍历一个关联数组,可以使用______循环。

- 答案:foreach三、简答题1. 问题:解释PHP中的`isset()`和`empty()`函数的区别。

答案:- `isset()`函数用于检查一个变量是否已经设置并且不为`null`。

如果变量已设置且不为`null`,则`isset()`返回`true`。

2017数据结构复习题-答案

2017数据结构复习题-答案

复习(一)一、选择题1.下面关于线性表的叙述错误的是(D)。

A、线性表采用顺序存储必须占用一片连续的存储空间B、线性表采用链式存储不必占用一片连续的存储空间C、线性表采用链式存储便于插入和删除操作的实现D、线性表采用顺序存储便于插入和删除操作的实现2.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(B )个空指针域。

A、 2m-1B、 2mC、 2m+1D、 4m3.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为(C)。

A、 R-FB、 F-RC、(R-F+M)%MD、(F-R+M)%M4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为(A)。

A、 BADCB、 BCDAC、 CDABD、CBDA5.设某完全无向图中有n个顶点,则该完全无向图中有(A )条边。

A、 n(n-1)/2B、 n(n-1)C、 n2D、 n2-16.设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是(B )。

A、线性结构B、树型结构C、物理结构D、图型结构7.下面程序的时间复杂为(B)for(i=1,s=0;i<=n;i++){t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}A、 O(n)B、 O(n2)C、 O(n3)D、 O(n4)8.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为(A )。

数据结构面试题及答案

数据结构面试题及答案

数据结构面试题及答案数据结构面试题及答案1、反转一个链表。

循环算法。

1 List reverse(List l) {2 if(!l) return l;3 list cur = l.next;4 list pre = l;5 list tmp;6 pre.next = null;7 while ( cur ) {8 tmp = cur;9 cur = cur.next;10 tmp.next = pre11 pre = tmp;12 }13 return tmp;14 }2、反转一个链表。

递归算法。

1 List resverse(list l) {2 if(!l || !l.next) return l;34 List n = reverse(l.next);5 l.next.next = l;6 l.next=null;7 }8 return n;9 }3、广度优先遍历二叉树。

1 void BST(Tree t) {2 Queue q = new Queue();3 q.enque(t);4 Tree t = que();5 while(t) {6 System.out.println(t.value);7 q.enque(t.left);8 q.enque(t.right);9 t = que();10 }11 }----------------------1class Node {2 Tree t;3 Node next;4 }5class Queue {6 Node head;7 Node tail;8 public void enque(Tree t){9 Node n = new Node();10 n.t = t;11 if(!tail){12 tail = head = n;13 } else {14 tail.next = n;15 tail = n;16 }17 }18 public Tree deque() {19 if (!head) {20 return null;21 } else {22 Node n = head;23 head = head.next;24 return n.t;25 }26}4、输出一个字符串所有排列。

经典数据结构面试题(含答案)

经典数据结构面试题(含答案)

经典数据结构面试题(含答案)1. 什么是数据结构?数据结构是计算机存储、组织数据的方式,它能够更有效地存储数据,以便于进行数据检索和修改。

2. 什么是线性表?线性表是一种基本的数据结构,由一组数据元素组成,其中每个元素都有一个前驱和一个后继,除了第一个元素没有前驱,一个元素没有后继。

3. 什么是栈?栈是一种后进先出(LIFO)的数据结构,它允许在一端进行插入和删除操作,通常称为栈顶。

4. 什么是队列?队列是一种先进先出(FIFO)的数据结构,它允许在一端进行插入操作,在另一端进行删除操作,通常称为队头和队尾。

5. 什么是链表?链表是一种由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。

链表可以分为单向链表、双向链表和循环链表。

6. 什么是树?树是一种非线性数据结构,由节点组成,每个节点有零个或多个子节点。

树可以分为二叉树、平衡树、B树等。

7. 什么是图?图是一种由节点和边组成的数据结构,节点称为顶点,边表示顶点之间的关系。

图可以分为有向图和无向图。

8. 什么是排序算法?排序算法是一种对数据进行排序的方法,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。

9. 什么是哈希表?哈希表是一种基于哈希函数的数据结构,它通过哈希函数将键值映射到表中一个位置来快速检索数据。

10. 什么是动态规划?动态规划是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。

经典数据结构面试题(含答案)11. 什么是二叉搜索树?二叉搜索树是一种特殊的二叉树,其中每个节点的左子树只包含小于该节点的值,右子树只包含大于该节点的值。

12. 什么是平衡二叉树?平衡二叉树是一种自平衡的二叉搜索树,它通过旋转操作来保持树的平衡,使得树的高度保持在对数级别。

13. 什么是B树?B树是一种自平衡的树数据结构,它保持数据的有序性,并允许搜索、顺序访问、插入和删除的操作都在对数时间内完成。

数据结构常用面试题

数据结构常用面试题

1、以下哪种数据结构常用于实现栈?A、链表B、数组C、二叉树D、哈希表(答案:B)2、在二叉搜索树中,若一个节点的左子树不为空,则左子树上所有节点的值都____该节点的值。

A、大于B、小于C、等于D、不确定(答案:B)3、队列这种数据结构遵循的访问原则是?A、先进先出B、后进先出C、随机访问D、按优先级访问(答案:A)4、图数据结构中,用来表示图中顶点之间关系的元素称为?A、顶点B、边C、路径D、环(答案:B)5、以下哪种数据结构最适合用于快速查找操作?A、链表B、栈C、哈希表D、队列(答案:C)6、在顺序存储的线性表中,第i个元素的存储地址是?A、随机的B、与i无关C、通过计算首地址和i的关系得到D、由用户自定义(答案:C)7、下列关于二叉树遍历的说法中,错误的是?A、前序遍历首先访问根节点B、中序遍历对于任何节点,其左子树节点先于该节点被访问C、后序遍历的最后一个被访问的节点是根节点D、层次遍历是从根节点开始,自上而下逐层遍历(答案:D)8、以下哪种情况不会导致二叉搜索树退化成链表?A、插入的元素按递增顺序B、插入的元素按递减顺序C、随机插入元素D、插入的元素先递增后递减(答案:C)9、在哈希表中,解决冲突的方法不包括?A、开放寻址法B、链地址法C、再哈希法D、二分查找法(答案:D)10、关于树的深度优先搜索(DFS),以下描述错误的是?A、DFS需要使用栈来辅助实现B、DFS可以遍历图或树的所有节点C、DFS对于每个节点只访问一次D、DFS总是先访问深度最深的节点(答案:D)。

数据结构试题及答案(10套)

数据结构试题及答案(10套)

一、单选题(每题 2 分,共20分)1.1.对一个算法的评价,不包括如下(B )方面的内容。

A.健壮性和可读性 B.并行性 C.正确性 D.时空复杂度2.2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行(A )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3.3.对线性表,在下列哪种情况下应当采用链表表示( B )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35.网是一种(D )。

A.有向图 B.无向图 C.无向无环图 D.有向无环图6.6.采用开放定址法处理散列表的冲突时,其平均查找长度(B)。

A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同 D.高于二分查找7.7.若需要利用形参直接访问实参时,应将形参变量说明为(D )参数。

A.值 B.函数 C.指针 D.引用8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的( A )。

A.行号 B.列号 C.元素值 D.非零元素个数9.9.快速排序在最坏情况下的时间复杂度为( D )。

A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2)10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( C )。

A. O(n)B. O(1)C. O(log2n) D. O(n2)二、运算题(每题 6 分,共24分)1. 1.数据结构是指数据及其相互之间的______________。

2017年4月自考02331数据结构试题及答案

2017年4月自考02331数据结构试题及答案

2017年 4 月高等教育自学考试全国统一命题考试数据结构试卷(课程代码 02331)本试卷共7 页。

满分l00 分,考试时间l50 分钟。

考生答题注意事项:1.本卷所有试题必须在答题卡上作答。

答在试卷上无效,试卷空白处和背面均可作草稿纸。

2.第一部分为选择题。

必须对应试卷上的题号使用2B 铅笔将“答题卡”的相应代码涂黑。

3.第二部分为非选择题。

必须注明大、小题号。

使用0.5 毫米黑色字迹签字笔作答。

4.合理安排答题空间,超出答题区域无效。

第一部分选择题(共 30 分)一、单项选择题(本大题共l5 小题,每小题2分,共30 分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。

错涂、多涂或未涂均无分。

1.下列叙述中,不正确的是A .算法解决的只能是数值计算问题B .同一问题可以有多种不同算法C .算法的每一步操作都必须明确无歧义D .算法必须在执行有限步后结束2.下列关于栈中逻辑上相邻的两个数据元素的叙述中,正确的是A .顺序存储时不一定相邻,链式存储时一定相邻B .顺序存储时不一定相邻,链式存储时也不一定相邻C .顺序存储时一定相邻,链式存储时也一定相邻D .顺序存储时一定相邻,链式存储时不一定相邻4.设栈的入栈序列为1,2,3,4,5,经过入出删作后,可能得到的出栈序列是A. 2, 3,5, 1,4B. 4, 2, 1,3,5C. 3, 4, 1,2,5D. 3,4, 2, 1,55.数组A[2][3]按行优先顺序存放,A的首地址为10。

若A中每个元素占用一个存储.单元,贝!I元素A[l][2]的存储地址是A. 10 B・12 C∙ 14 D. 156.广义表((a,b),(c,d))的表尾是A. bB. dC. (c, d)D. ((c, d))7.若完全二叉树T包含20个终端结点,则T的结点数最多是A. 38 B・39 C. 40 D. 418.对下面的二叉树进行中序线索化后,结点F的右指针指向的结点是9.若图G是一个含有”个顶点的强连通有向图,则G的边数至少是A. «-1B. n C∙n t(n+l)∕2 D. Π*(Λ+1)10.若从顶点a开始对下图进行广度优先遍历,则不可能得到的遍历序列是A・ a, b, c, e, f, d B∙ a人Edf c, bC・ a, c, e, b, d>f D. a9 e, b, c, d下列排序算法中,稳定的是A.堆排序B.直接选择排序C.冒泡排序D∙希尔排序12.下列排序算法中,比较操作的次数与待排序序列初始排列状态无关的是A・快速排序 B.直接选择排序C.冒泡排序D・直接插入排序13・若对二叉排序树进行遍历,则下列遍历方式中,其遍历结果为递增有序的是A・前序遍历B・中序遍历C.后序遍历D.按层遍历14.设一组记录的关键字为{12,22,10,20,8& 27, 54,11},散列函数为H(key)=key % 11,用拉链法解决冲突,则散列地址为0的链中结点数是・A. 1B. 2C. 3D. 415.在下面3阶B树中插入关键字65后,其根结点内的关键字是A. 53 90 D. 65B. 53C. 90第二部分非选择题(共70分)二、填空题(本大题共10小题,每小题2分,共20分)16.散列方法的基本思想是根据元素的关键字直接计算岀该元素的___________ .17.—个需要频繁增删的线性表宜选择_________ 存储结构。

《数据结构》2017年4月自考试卷及答案

《数据结构》2017年4月自考试卷及答案

2017年4月高等教育自学考试全国统一命题考试
数据结构试卷
(课程代码02331)
本试卷共7页。

满分l00分,考试时间l50分钟。

考生答题注意事项:
1.本卷所有试题必须在答题卡上作答。

答在试卷上无效,试卷空白处和背面均可作草稿纸。

2.第一部分为选择题。

必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。

3.第二部分为非选择题。

必须注明大、小题号。

使用0.5毫米黑色字迹签字笔作答。

4.合理安排答题空间,超出答题区域无效。

第一部分选择题(共30分)
一、单项选择题(本大题共l5小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。

错涂、多涂或未涂均无分。

1.下列叙述中,不正确的是
A.算法解决的只能是数值计算问题
B.同一问题可以有多种不同算法
C.算法的每一步操作都必须明确无歧义
D.算法必须在执行有限步后结束
2.下列关于栈中逻辑上相邻的两个数据元素的叙述中,正确的是
A.顺序存储时不一定相邻,链式存储时一定相邻
B.顺序存储时不一定相邻,链式存储时也不一定相邻
C.顺序存储时一定相邻,链式存储时也一定相邻
D.顺序存储时一定相邻,链式存储时不一定相邻。

Java常见数据结构面试题(带答案)

Java常见数据结构面试题(带答案)

Java常见数据结构⾯试题(带答案)1.栈和队列的共同特点是(只允许在端点处插⼊和删除元素)4.栈通常采⽤的两种存储结构是(线性存储结构和链表存储结构)5.下列关于栈的叙述正确的是(D)A.栈是⾮线性结构B.栈是⼀种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任⼀元素C.插⼊删除不需要移动元素D.所需空间与线性表长度成正⽐7.⽤链表表⽰线性表的优点是(便于插⼊和删除操作)8.在单链表中,增加头结点的⽬的是(⽅便运算的实现)9.循环链表的主要优点是(从表中任⼀结点出发都能访问到整个链表)10.线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)A.每个元素都有⼀个直接前件和直接后件B.线性表中⾄少要有⼀个元素C.表中诸元素的排列顺序必须是由⼩到⼤或由⼤到⼩D.除第⼀个和最后⼀个元素外,其余每个元素都有⼀个且只有⼀个直接前件和直接后件11.线性表若采⽤链式存储结构时,要求内存中可⽤存储单元的地址(D)A.必须是连续的B.部分地址必须是连续的C.⼀定是不连续的D.连续不连续都可以12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)13.树是结点的集合,它的根结点数⽬是(有且只有1)14.在深度为5的满⼆叉树中,叶⼦结点的个数为(31)15.具有3个结点的⼆叉树有(5种形态)16.设⼀棵⼆叉树中有3个叶⼦结点,有8个度为1的结点,则该⼆叉树中总的结点数为(13)17.已知⼆叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)18.已知⼀棵⼆叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该⼆叉树的后序遍历为(DGEBHFCA)19.若某⼆叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。

数据结构面试题(含答案)

数据结构面试题(含答案)

之阳早格格创做1.栈战行列的共共特性是(只允许正在端面处拔出战简略元素)4.栈常常采与的二种死存结构是(线性死存结媾战链表死存结构)5.下列闭于栈的道述精确的是(D)A.栈利害线性结构B.栈是一种树状结构C.栈具备进步先出的特性D.栈有后进先出的特性6.链表不具备的特性是(B)A.不必预先预计死存空间 B.可随机考察任一元素C.拔出简略不需要移动元素D.所需空间与线性表少度成正比7.用链表表示线性表的便宜是(便于拔出战简略支配)8.正在单链表中,减少头结面的手段是(便当运算的真止)9.循环链表的主要便宜是(从表中任一结面出收皆能考察到所有链表)10.线性表L=(a1,a2,a3,……ai,……an),下列道法精确的是(D)A.每个元素皆有一个间接前件战间接后件B.线性表中起码要有一个元素C.表中诸元素的排列程序必须是由小到大大概由大到小D.除第一个战开端一个元素中,其余每个元素皆有一个且惟有一个间接前件战间接后件11.线性表若采与链式死存结构时,央供内存中可用死存单元的天面(D)A.必须是连绝的B.部分天面必须是连绝的C.一定是不连绝的D.连绝不连绝皆不妨12.线性表的程序死存结媾战线性表的链式死存结构分别是(随机存与的死存结构、程序存与的死存结构)13.树是结面的集中,它的根结面数目是(有且惟有1)14.正在深度为5的谦二叉树中,叶子结面的个数为(31)15.具备3个结面的二叉树有(5种形态)16.设一棵二叉树中有3个叶子结面,有8个度为1的结面,则该二叉树中总的结面数为(13)17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)18.已知一棵二叉树前序遍历战中序遍历分别为ABDEGCFH战DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)19.若某二叉树的前序遍历考察程序是abdgcefh,中序遍历考察程序是dgbaechf,则其后序遍历的结面考察程序是(gdbehfca)20.数据库呵护分为:仄安性统造、完备性统造、并收性统造战数据的回复.1. 正在预计机中,算法是指(解题筹备的准确而完备的形貌)2.正在下列选项中,哪个不是一个算法普遍该当具备的基础特性(无贫性)证明:算法的四个基础特性是:可止性、决定性、有贫性战拥有脚够的情报.3. 算法普遍皆不妨用哪几种统造结构拉拢而成(程序、采用、循环)4.算法的时间搀纯度是指(算法真止历程中所需要的基础运算次数)5. 算法的空间搀纯度是指(真止历程中所需要的死存空间)6. 算法分解的手段是(分解算法的效用以供矫正)7. 下列道述精确的是(C)A.算法的真止效用与数据的死存结构无闭B.算法的空间搀纯度是指算法步调中指令(大概语句)的条数C.算法的有贫性是指算法必须能正在真止有限个步调之后终止D.算法的时间搀纯度是指真止算法步调所需要的时间8.数据结构动做预计机的一门教科,主要钻研数据的逻辑结构、对付百般数据结构举止的运算,以及(数据的死存结构)9. 数据结构中,与所使用的预计机无闭的是数据的(C)A.死存结构 B.物理结构 C.逻辑结构 D.物理战死存结构10. 下列道述中,过失的是(B)A.数据的死存结构与数据处理的效用稀切相闭B.数据的死存结构与数据处理的效用无闭C.数据的死存结构正在预计机中所占的空间纷歧定是连绝的D.一种数据的逻辑结构不妨有多种死存结构11. 数据的死存结构是指(数据的逻辑结构正在预计机中的表示)12. 数据的逻辑结构是指(反映数据元素之间逻辑闭系的数据结构)13. 根据数据结构中各数据元素之间前后件闭系的搀纯程度,普遍将数据结构分为(线性结媾战非线性结构)14. 下列数据结构具备影象功能的是(C)A.行列B.循环行列C.栈D.程序表15. 下列数据结构中,按进步后出准则构造数据的是(B)A.线性链表 B.栈 C.循环链表 D.程序表16. 递归算法普遍需要利用(行列)真止.17. 下列闭于栈的道述中精确的是(D)A.正在栈中只可拔出数据B.正在栈中只可简略数据C.栈是进步先出的线性表 D.栈是进步后出的线性表20. 由二个栈共享一个死存空间的佳处是(节省死存空间,落矮上溢爆收的机率)21. 应用步调正在真止历程中,需要通过挨印机输出数据时,普遍先产死一个挨印做业,将其存搁正在硬盘中的一个指定(行列)中,当挨印机空忙时,便会按先去先服务的办法从中与出待挨印的做业举止挨印.22.下列闭于行列的道述中精确的是(C)A.正在行列中只可拔出数据 B.正在行列中只可简略数据 C.行列是进步先出的线性表 D.行列是进步后出的线性表23.下列道述中,精确的是(D)A.线性链表中的各元素正在死存空间中的位子必须是连绝的B.线性链表中的表头元素一定死存正在其余元素的前里C.线性链表中的各元素正在死存空间中的位子纷歧定是连绝的,但是表头元素一定死存正在其余元素的前里D.线性链表中的各元素正在死存空间中的位子纷歧定是连绝的,且各元素的死存程序也是任性的24.下列道述中精确的是(A)A.线性表是线性结构 B.栈与行列利害线性结构C.线性链表利害线性结构 D.二叉树是线性结构25. 线性表L=(a1,a2,a3,……ai,……an),下列道法精确的是(D)A.每个元素皆有一个间接前件战间接后件 B.线性表中起码要有一个元素C.表中诸元素的排列程序必须是由小到大大概由大到小D.除第一个元素战开端一个元素中,其余每个元素皆有一个且惟有一个间接前件战间接后件26.线性表若采与链式死存结构时,央供内存中可用死存单元的天面(连绝不连绝皆不妨)27. 链表不具备的特性是(B)A.不必预先预计死存空间 B.可随机考察任一元素C.拔出简略不需要移动元素 D.所需空间与线性表少度成正比28. 非空的循环单链表head的尾结面(由p所指背),谦脚(p->next=head)29.与单背链表相比,单背链表的便宜之一是(更简单考察相邻结面)30. 正在(D)中,只消指出表中所有一个结面的位子,便不妨从它出收依次考察到表中其余所有结面.A.线性单链表 B.单背链表 C.线性链表 D.循环链表31. 以下数据结构属于非线性数据结构的是(C)A.行列 B.线性表C.二叉树 D.栈32.树是结面的集中,它的根结面数目是(有且惟有1)33.具备3个结面的二叉树有(5种形态)34. 正在一棵二叉树上第8层的结面数最多是(128)注:2K-135. 正在深度为5的谦二叉树中,叶子结面的个数为(16)注:2n-136. 正在深度为5的谦二叉树中,公有(31)个结面. 注:2n-137.设一棵真足二叉树公有699个结面,则正在该二叉树中的叶子结面数为(350)证明:真足二叉树归纳面数为N,若N为奇数,则叶子结面数为(N+1)/2;若N为奇数,则叶子结面数为N/2.38. 设有下列二叉树,对付此二叉树中序遍历的截止是(B)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA39.已知二叉树后序遍历序列是dabec,中序遍历序列debac,它的前序遍历序列是(cedba)40. 已知一棵二叉树前序遍历战中序遍历分别为ABDEGCFH战DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)41.若某二叉树的前序遍历考察程序是abdgcefh,中序遍历考察程序是dgbaechf,则其后序遍历的结面考察程序是(gdbehfca)42. 串的少度是(串中所含字符的个数)43.设有二个串p战q,供q正在p中尾次出现位子的运算称搞(模式匹配)44. N个顶面的连通图中边的条数起码为(N-1)45.N个顶面的强连通图的边数起码有(N)46.对付少度为n的线性表举止程序查找,正在最坏情况下所需要的比较次数为(N)47. 最简朴的接换排序要领是(冒泡排序)48.假设线性表的少度为n,则正在最坏情况下,冒泡排序需要的比较次数为(n(n-1)/2)49. 正在待排序的元素序列基础有序的前提下,效用最下的排序要领是(冒泡排序)50. 正在最坏情况下,下列程序要领中时间搀纯度最小的是(堆排序)51. 希我排序法属于(拔出类排序)52. 堆排序法属于(采用类排序)53. 正在下列几种排序要领中,央供内存量最大的是(归并排序)54. 已知数据表A中每个元素距其最后位子不近,为节省时间,应采与(间接拔出排序)55. 算法的基础特性是可止性、决定性、有贫性战拥有脚够的情报.1.一个算法常常由二种基础果素组成:一是对付数据对付象的运算战支配,二是算法的统造结构.1. 算法的搀纯度主要包罗时间搀纯度战空间搀纯度.2. 真止算法所需的死存单元几战算法的处事量大小分别称为算法的空间搀纯度战时间搀纯度 .3.所谓数据处理是指对付数据集中中的各元素以百般办法举止运算,包罗拔出、简略、查找、变动等运算,也包罗对付数据元素举止分解.4.数据结构是指相互有闭联的数据元素的集中.5.数据结构分为逻辑结构与死存结构,线性链表属于死存结构 .6.数据结构包罗数据的逻辑结媾战数据的死存结构.7. 数据结构包罗数据的逻辑结构、数据的死存结构以及对付数据的支配运算.8.数据元素之间的所有闭系皆不妨用前趋战后继闭系去形貌.9.数据的逻辑结构有线性结媾战非线性结构二大类.10.时常使用的死存结构有程序、链接、索引等死存结构.11. 程序死存要领是把逻辑上相邻的结面死存正在物理位子相邻的死存单元中.12. 栈的基础运算有三种:进栈、退栈与读栈顶元素 .13. 行列主要有二种基础运算:进队运算与退队运算 .14. 正在本质应用中,戴链的栈不妨用去支集预计机死存空间中所有空忙的死存结面,那种戴链的栈称为可利用栈 .15.栈战行列常常采与的死存结构是链式死存战程序死存 .16.当线性表采与程序死存结构真止死存时,其主要特性是逻辑结构中相邻的结面正在死存结构中仍相邻 .17. 循环行列主要有二种基础运算:进队运算与退队运算.每举止一次进队运算,队尾指针便进1 .18.当循环行列非空且队尾指针等于对付头指针时,证明循环行列已谦,不克不迭举止进队运算.那种情况称为上溢 .19.当循环行列为空时,不克不迭举止退队运算,那种情况称为下溢 .20. 正在一个容量为25的循环行列中,若头指针front=16,尾指针rear=9,则该循环行列中公有 18 个元素.注:当rear<front时,元素个数=总容量-(front-rear);当rear>front时,元素个数=rear-front.1.推断链表是可存留环型链表问题:推断一个链表是可存留环,比圆底下那个链表便存留一个环:比圆N1->N2->N3->N4->N5->N2便是一个有环的链表,环的启初结面是N5那里有一个比较简朴的解法.树立二个指针p1,p2.屡屡循环p1背前走一步,p2背前走二步.曲到p2遇到NULL指针大概者二个指针相等中断循环.如果二个指针相等则证明存留环.struct link{int data;link* next;};bool IsLoop(link* head){link* p1=head, *p2 = head;if (head ==NULL || head->next ==NULL){return false;}do{p1= p1->next;p2 = p2->next->next;} while(p2 && p2->next && p1!=p2);if(p1 == p2)return true;elsereturn false;}2,链表反转单背链表的反转是一个时常被问到的一个里试题,也是一个非常前提的问题.比圆一个链表是那样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1.最简单料到的要领遍历一遍链表,利用一个辅帮指针,死存遍历历程中目前指针指背的下一个元素,而后将目前节面元素的指针反转后,利用已经死存的指针往后里继承遍历.源代码如下:struct linka {int data;linka* next;};void reverse(linka*& head){if(head ==NULL)return;linka*pre, *cur, *ne;pre=head;cur=head->next;while(cur){ne = cur->next;cur->next = pre;pre = cur;cur = ne;}head->next = NULL;head = pre;}另有一种利用递归的要领.那种要领的基础思维是正在反转目前节面之前先调用递归函数反转后绝节面.源代码如下.不过那个要领有一个缺面,便是正在反转后的开端一个结面会产死一个环,所以必须将函数的返回的节面的next域置为NULL.果为要改变head指针,所以我用了引用.算法的源代码如下:linka* reverse(linka* p,linka*& head){if(p == NULL || p->next == NULL){head=p;return p;}else{linka* tmp = reverse(p->next,head);tmp->next = p;return p;}}3,推断二个数组中是可存留相共的数字给定二个排佳序的数组,何如下效得推断那二个数组中存留相共的数字?那个问题最先料到的是一个O(nlogn)的算法.便是任性选择一个数组,遍历那个数组的所有元素,遍历历程中,正在另一个数组中对付第一个数组中的每个元素举止binary search.用C++真止代码如下:bool findcommon(int a[],int size1,int b[],int size2){int i;for(i=0;i<size1;i++){int start=0,end=size2-1,mid;while(start<=end){mid=(start+end)/2;if(a[i]==b[mid])return true;else if (a[i]<b[mid])end=mid-1;elsestart=mid+1;}}return false;}厥后创造有一个 O(n)算法.果为二个数组皆是排佳序的.所以只消一次遍历便止了.最先设二个下标,分别初初化为二个数组的起初天面,依次背前促成.促成的准则是比较二个数组中的数字,小的那个数组的下标背前促成一步,曲到所有一个数组的下标到达数组开端时,如果那时还出遇到相共的数字,证明数组中不相共的数字. bool findcommon2(int a[], int size1, int b[], int size2){int i=0,j=0;while(i<size1 && j<size2){if(a[i]==b[j])return true;if(a[i]>b[j])j++;if(a[i]<b[j])i++;}return false;}4,最大子序列问题:给定一整数序列A1, A2,... An (大概有背数),供A1~An的一身材序列Ai~Aj,使得Ai到Aj的战最大比圆:整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的战为21.对付于那个问题,最简朴也是最简单料到的那便是贫举所有子序列的要领.利用三沉循环,依次供出所有子序列的战而后与最大的那个.天然算法搀纯度会达到O(n^3).隐然那种要领不是最劣的,底下给出一个算法搀纯度为O(n)的线性算法真止,算法的根源于Programming Pearls 一书籍. 正在给出线性算法之前,先去瞅一个对付贫举算法举止劣化的算法,它的算法搀纯度为O(n^2).本去那个算法不过对付对付贫举算法轻微搞了一些建改:本去子序列的战咱们本去不需要屡屡皆沉新预计一遍.假设Sum(i, j)是A[i] ... A[j]的战,那么Sum(i, j+1) = Sum(i, j) + A[j+1].利用那一个递推,咱们便不妨得到底下那个算法:int max_sub(int a[],int size){int i,j,v,max=a[0];for(i=0;i<size;i++){v=0;for(j=i;j<size;j++){v=v+a[j];//Sum(i, j+1) = Sum(i, j) + A[j+1]if(v>max)max=v;}}return max;}那何如才搞达到线性搀纯度呢?那里使用动背筹备的思维.先瞅一下源代码真止:int max_sub2(int a[], int size){int i,max=0,temp_sum=0;for(i=0;i<size;i++){temp_sum+=a[i];if(temp_sum>max)max=temp_sum;else if(temp_sum<0)temp_sum=0;}return max;}6,按单词汇反转字符串本去不是简朴的字符串反转,而是按给定字符串里的单词汇将字符串倒转过去,便是道字符串内里的单词汇仍旧脆持本去的程序,那里的每个单词汇用空格分启.比圆:Here is 通过反转后形成: is Here如果不过简朴的将所有字符串翻转的话,不妨遍历字符串,将第一个字符战开端一个接换,第二个战倒数第二个接换,依次循环.本去依照单词汇反转的话不妨正在第一遍遍历的前提上,再遍历一遍字符串,对付每一个单词汇再反转一次.那样每个单词汇又回复了本去的程序. char* reverse_word(const char* str){int len = strlen(str);char* restr = new char[len+1];strcpy(restr,str);int i,j;for(i=0,j=len-1;i<j;i++,j--){char temp=restr[i];restr[i]=restr[j];restr[j]=temp;}int k=0;while(k<len){i=j=k;while(restr[j]!=' ' && restr[j]!='' ) j++;k=j+1;j--;for(;i<j;i++,j--){char temp=restr[i];restr[i]=restr[j];restr[j]=temp;}}return restr;}如果思量空间战时间的劣化的话,天然不妨将上头代码里二个字符串接换部分改为同大概真止.比圆将char temp=restr[i];restr[i]=restr[j];restr[j]=temp;改为restr[i]^=restr[j];restr[j]^=restr[i];restr[i]^=restr[j];7,字符串反转我不记错的话是一讲MSN的心试题,网上奇尔中瞅到的,拿去搞了一下.题目是那样的,给定一个字符串,一个那个字符串的子串,将第一个字符串反转,但是死存子串的程序稳定.比圆:输进:第一个字符串: "This is fishsky 's Chinese site: /cn"子串: "fishsky"输出: "nc/nc.moc.fishsky.www//:ptth :etis esenihCs'fishsky si sihT"普遍的要领是先扫描一边第一个字符串,而后用stack把它反转,共时记录下子串出现的位子.而后再扫描一遍把记录下去的子串再用stack反转.我用的要领是用一遍扫描数组的要领.扫描中如果创造子串,便将子串倒过去压进堆栈.开端再将堆栈里的字符弹出,那格式串又回复了本去的程序.源代码如下:#include <iostream>#include <cassert>#include <stack>using namespace std;//reverse the string 's1' except the substring 'token'.const char* reverse(const char* s1, const char* token){assert(s1 && token);stack<char> stack1;const char* ptoken = token, *head = s1, *rear = s1; while (*head != ''){while(*head!= '' && *ptoken == *head) {ptoken++;head++;}if(*ptoken == '')//contain the token{const char* p;for(p=head-1;p>=rear;p--)stack1.push(*p);ptoken = token;rear = head;}else{stack1.push(*rear);head=++rear;ptoken = token;}}char * return_v = new char[strlen(s1)+1];int i=0;while(!stack1.empty()){return_v[i++] = stack1.top();stack1.pop();}return_v[i]='';return return_v;}int main(int argc, char* argv[]){cout<<"This is fishsky 's Chinese site:/cn";cout<<reverse("This is fishsky's Chinese site: http://www. /cn"," fishsky ");return 0;}8, 简略数组中沉复的数字问题:一个动背少度可变的数字序列,以数字0为中断标记,央供将沉复的数字用一个数字代替,比圆:将数组 1,1,1,2,2,2,2,2,7,7,1,5,5,5,0 转形成1,2,7,1,5,0 问题比较简朴,要注意的是那个数组是动背的.所以预防贫苦我仍旧用了STL的vector.#include <iostream>#include <vector>using namespace std;//remove the duplicated numbers in an intger array, the array was end with 0;//e.g. 1,1,1,2,2,5,4,4,4,4,1,0 --->1,2,5,4,1,0void static remove_duplicated(int a[], vector<int>& _st) {_st.push_back(a[0]);for(int i=1;_st[_st.size()-1]!=0;i++){if(a[i-1]!=a[i])_st.push_back(a[i]);}}天然如果不妨改变本去的数组的话,不妨不必STL,仅需要指针支配便不妨了.底下那个步调将建改本去数组的真质.void static remove_duplicated2(int a[]){if(a[0]==0 || a==NULL)return;int insert=1,current=1;while(a[current]!=0){if(a[current]!=a[current-1]){a[insert]=a[current];insert++;current++;}elsecurrent++;}a[insert]=0;}9,怎么样推断一棵二叉树是可是仄稳二叉树问题:推断一个二叉排序树是可是仄稳二叉树办理筹备:根据仄稳二叉树的定义,如果任性节面的安排子树的深度出进不超出1,那那棵树便是仄稳二叉树.最先编写一个预计二叉树深度的函数,利用递归真止. template<typename T>static int Depth(BSTreeNode<T>* pbs){if (pbs==NULL)return 0;else{int ld = Depth(pbs->left);int rd = Depth(pbs->right);return 1 + (ld >rd ? ld : rd);}}底下是利用递归推断安排子树的深度是可出进1去推断是可是仄稳二叉树的函数:template<typename T>static bool isBalance(BSTreeNode<T>* pbs){if (pbs==NULL)return true;int dis = Depth(pbs->left) - Depth(pbs->right);if (dis>1 || dis<-1 )return false;elsereturn isBalance(pbs->left) &&isBalance(pbs->right);4.abstract class Something {private abstract String doSomething ();}该段代码有错吗?问案: 错.abstract的methods不克不迭以private建饰.abstract的methods便是让子类implement(真止)简曲细节的,怎么不妨用private把abstract method启锁起去呢? (共理,abstract method前不克不迭加final).5.瞅瞅底下的代码段错正在哪里?public class Something {void doSomething () {private String s = "";int l = s.length();}}问案: 错.局部变量前不克不迭搁置所有考察建饰符(private,public,战protected).final不妨用去建饰局部变量(final如共abstract战strictfp,皆利害考察建饰符,strictfp 只可建饰class战method而非variable).6. 底下该段代码是可有错,假如有错错正在哪里?abstract class Name {private String name;public abstract boolean isStupidName(String name) {}}问案: 错.abstract method必须以分号末端,且不戴花括号.。

数据结构试题(含答案)

数据结构试题(含答案)

数据结构试题(含答案)数据结构试题(含答案)一、选择题1. 数据结构是计算机科学中的一个重要概念。

下列选项中,不属于数据结构的是:A. 数组B. 栈C. 数据库D. 链表答案:C2. 在数据结构中,栈(Stack)是一种后进先出(LIFO)的数据结构。

下列操作中,不属于栈的是:A. 入栈B. 出栈C. 遍历D. 清空栈答案:C3. 链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点包含两个部分:数据和指向下一个节点的指针。

下列选项中,不属于链表的是:A. 单链表B. 双链表C. 循环链表D. 二叉树答案:D4. 哈希表(Hash Table)是一种根据关键码直接访问存储位置的数据结构。

下列选项中,不属于哈希表的优点是:A. 快速查找B. 插入和删除操作效率高C. 数据无序D. 冲突较少答案:C二、填空题1. 树(Tree)是一种非线性数据结构,它由一组以边连接的节点组成。

树中每个节点最多可以有________个子节点。

答案:无限制/任意个2. 图(Graph)是由节点和连接节点的边组成的数据结构。

图中节点的度是指与该节点相连接的边的________。

答案:数量3. 广度优先搜索(BFS)和深度优先搜索(DFS)是常用的图遍历算法。

在BFS中,使用________结构来保存待访问的节点。

答案:队列4. 在二叉搜索树(Binary Search Tree)中,左子树中的每个节点的值都小于根节点的值,右子树中的每个节点的值都大于根节点的值。

这种特性称为_______________。

答案:二叉搜索树性质三、简答题1. 请简要说明线性数据结构和非线性数据结构的区别。

答案:线性数据结构是指数据元素之间存在一对一的线性关系,例如数组、栈、队列等;而非线性数据结构是指数据元素之间存在一对多或多对多的关系,例如树、图等。

线性数据结构的存储方式是连续的,非线性数据结构的存储方式是离散的。

Java常见数据结构面试题(带答案)

Java常见数据结构面试题(带答案)

Java常见数据结构⾯试题(带答案)1.栈和队列的共同特点是(只允许在端点处插⼊和删除元素)4.栈通常采⽤的两种存储结构是(线性存储结构和链表存储结构)5.下列关于栈的叙述正确的是(D)A.栈是⾮线性结构B.栈是⼀种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任⼀元素C.插⼊删除不需要移动元素D.所需空间与线性表长度成正⽐7.⽤链表表⽰线性表的优点是(便于插⼊和删除操作)8.在单链表中,增加头结点的⽬的是(⽅便运算的实现)9.循环链表的主要优点是(从表中任⼀结点出发都能访问到整个链表)10.线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)A.每个元素都有⼀个直接前件和直接后件B.线性表中⾄少要有⼀个元素C.表中诸元素的排列顺序必须是由⼩到⼤或由⼤到⼩D.除第⼀个和最后⼀个元素外,其余每个元素都有⼀个且只有⼀个直接前件和直接后件11.线性表若采⽤链式存储结构时,要求内存中可⽤存储单元的地址(D)A.必须是连续的B.部分地址必须是连续的C.⼀定是不连续的D.连续不连续都可以12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)13.树是结点的集合,它的根结点数⽬是(有且只有1)14.在深度为5的满⼆叉树中,叶⼦结点的个数为(31)15.具有3个结点的⼆叉树有(5种形态)16.设⼀棵⼆叉树中有3个叶⼦结点,有8个度为1的结点,则该⼆叉树中总的结点数为(13)17.已知⼆叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)18.已知⼀棵⼆叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该⼆叉树的后序遍历为(DGEBHFCA)19.若某⼆叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。

数据结构基础面试题

数据结构基础面试题

数据结构基础及其面试题解答以下是10道数据结构面试题和答案:1.问题:什么是数据结构?答案:数据结构是计算机存储、组织数据的方式。

它是研究数据的逻辑结构和物理结构以及它们之间的相互关系的学科。

2.问题:常见的数据结构有哪些?答案:常见的数据结构包括数组、链表、栈、队列、树、图等。

3.问题:什么是栈?它有哪些特点?答案:栈是一种特殊的线性表,其操作遵循后进先出(LIFO)的原则。

栈具有后进先出的特点,即最后一个进入的元素总是第一个出去。

4.问题:什么是队列?它有哪些特点?答案:队列是一种特殊的线性表,其操作遵循先进先出(FIFO)的原则。

队列具有先进先出的特点,即第一个进入的元素总是第一个出去。

5.问题:什么是链表?它有哪些特点?答案:链表是一种由节点组成的线性表,每个节点包含数据和指向下一个节点的指针。

链表具有动态分配内存的特点,可以根据需要动态地增加或减少节点。

6.问题:什么是二叉树?它有哪些特点?答案:二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。

二叉树具有平衡性和高度可变的特性,可以用于实现搜索、排序等操作。

7.问题:什么是图的遍历?常见的遍历算法有哪些?答案:图的遍历是指按照一定的顺序访问图中的所有节点,并处理每个节点的操作。

常见的遍历算法有深度优先遍历(DFS)和广度优先遍历(BFS)。

8.问题:什么是哈希表?它有哪些特点?答案:哈希表是一种通过哈希函数将键映射到桶中的数据结构,用于快速查找、插入和删除操作。

哈希表具有平均时间复杂度为O(1)的优点,但在最坏情况下可能达到O(n)。

9.问题:什么是排序算法?常见的排序算法有哪些?答案:排序算法是一种将一组数据按照一定的顺序排列的算法。

常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。

10.问题:什么是树的遍历?常见的遍历算法有哪些?答案:树的遍历是指按照一定的顺序访问树中的所有节点,并处理每个节点的操作。

山西省2017年专升本选拔考试(C程序设计数据结构)历年真题详解

山西省2017年专升本选拔考试(C程序设计数据结构)历年真题详解

山西省2017年专升本选拔考试(C程序设计数据结构)历年真题详解山西省2017年专升本选拔考试(C程序设计数据结构)历年真题详解说明:本试题分C程序设计和数据结构(C语言版)两部分,各占100分,满分200分,考试时间150分钟。

第一部分C程序设计一、单项选择题( 本大题共10小题,共小题3分,共计30分,在每小题的四个备选答案中,只有一个答案是正确的,请将代表正确答案的字母填入下列表格内)1. C程序 (B)A.可立即执行B.是一种源程序C.经过编译即可执行D.是一种目标程序2. C语言中用于结构化程序设计的三种基本结构是(A)A.顺序结构、选择结构、循环结构B.if、switch、breakC.for、while、do-whileD.if、for、continue3.以下定义语句中正确的是(C)A. char a='A' b='B';B. float a=b=10.0;C. int a=10,*b=&aD. float *a,b=&a4.下面不属于C语言的数据类型是(C)A.整型B.实型C.逻辑型D.双精度实型5.变量的指针,其含义是指该变量的(B)A.值B.地址C.名D.一个标志6. 以下叙述中,正确的是(C)A. continue 和break语句只能用于循环体内B. continue 和break语句只能用于分支语句中C. continue 语句只能用于循环体内D. continue 语句只能用于分支语句中7. C语言规定,简单变量作为实参时它和对应形参之间的数据传递方式是( A )A.单向值传递B.地址传递C.相互传递D.由用户指定方式8. 下列运算符中,要求运算对象必须是整数的是(C)A. /B.”C. %D.!9.下面合法的赋值语句是(D)A.x+y=2002;B. ch= "green";C.x=(a+b)++;D. x=y=0316;10.若有定义:int x;则语句x=(2 *3)+6%5;运行后,x的值是(B)A.8B.7C.6D.5二、填空题(本大题共6小题,每空2分,共计12分)1.函数是具有相对独立功能的(程序段)。

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

2017年数据结构面试试题附答案1.栈和队列的共同特点是(只允许在端点处插入和删除元素)4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构)5.下列关于栈的叙述正确的是(D)A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征6.链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比7.用链表表示线性表的优点是(便于插入和删除操作)8.在单链表中,增加头结点的目的是(方便运算的实现)9.循环链表的主要优点是(从表中任一结点出发都能访问到整个链表)10.线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)A.每个元素都有一个直接前件和直接后件B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件11.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D)A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续不连续都可以12.线性表的顺序存储结构和线性表的链式存储结构分别是(随机存取的存储结构、顺序存取的存储结构)13.树是结点的集合,它的根结点数目是(有且只有1)14.在深度为5的满二叉树中,叶子结点的个数为(31)15.具有3个结点的二叉树有(5种形态)16.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为(13)17.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)18.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)19.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)20.数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。

1. 在计算机中,算法是指(解题方案的准确而完整的描述)2.在下列选项中,哪个不是一个算法一般应该具有的基本特征(无穷性)说明:算法的四个基本特征是:可行性、确定性、有穷性和拥有足够的情报。

3. 算法一般都可以用哪几种控制结构组合而成(顺序、选择、循环)4.算法的时间复杂度是指(算法执行过程中所需要的基本运算次数)5. 算法的空间复杂度是指(执行过程中所需要的存储空间)6. 算法分析的目的是(分析算法的效率以求改进)7. 下列叙述正确的是(C)A.算法的执行效率与数据的存储结构无关B.算法的空间复杂度是指算法程序中指令(或语句)的条数C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.算法的时间复杂度是指执行算法程序所需要的时间8.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及(数据的存储结构)9. 数据结构中,与所使用的计算机无关的是数据的(C)A.存储结构B.物理结构C.逻辑结构D.物理和存储结构10. 下列叙述中,错误的是(B)A.数据的存储结构与数据处理的效率密切相关B.数据的存储结构与数据处理的效率无关C.数据的存储结构在计算机中所占的空间不一定是连续的D.一种数据的逻辑结构可以有多种存储结构11. 数据的存储结构是指(数据的逻辑结构在计算机中的表示)12. 数据的逻辑结构是指(反映数据元素之间逻辑关系的数据结构)13. 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为(线性结构和非线性结构)14. 下列数据结构具有记忆功能的是(C)A.队列B.循环队列C.栈D.顺序表15. 下列数据结构中,按先进后出原则组织数据的是(B)A.线性链表B.栈C.循环链表D.顺序表16. 递归算法一般需要利用(队列)实现。

17. 下列关于栈的叙述中正确的是(D)A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表20. 由两个栈共享一个存储空间的好处是(节省存储空间,降低上溢发生的机率)21. 应用程序在执行过程中,需要通过打印机输出数据时,一般先形成一个打印作业,将其存放在硬盘中的一个指定(队列)中,当打印机空闲时,就会按先来先服务的方式从中取出待打印的作业进行打印。

22.下列关于队列的叙述中正确的是(C)A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表23.下列叙述中,正确的是(D)A.线性链表中的各元素在存储空间中的位置必须是连续的B.线性链表中的表头元素一定存储在其他元素的前面C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的24.下列叙述中正确的是(A)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构25. 线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)A.每个元素都有一个直接前件和直接后件B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件26.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(连续不连续都可以)27. 链表不具有的特点是(B)A.不必事先估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比28. 非空的循环单链表head的尾结点(由p所指向),满足(p->next=head)29.与单向链表相比,双向链表的优点之一是(更容易访问相邻结点)30. 在(D)中,只要指出表中任何一个结点的位置,就可以从它出发依次访问到表中其他所有结点。

A.线性单链表B.双向链表C.线性链表D.循环链表31. 以下数据结构属于非线性数据结构的是(C)A.队列B.线性表C.二叉树D.栈32.树是结点的集合,它的根结点数目是(有且只有1)33.具有3个结点的二叉树有(5种形态)34. 在一棵二叉树上第8层的结点数最多是(128)注:2K-135. 在深度为5的满二叉树中,叶子结点的个数为(16)注:2n-136. 在深度为5的满二叉树中,共有(31)个结点。

注:2n-137.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(350)说明:完全二叉树总结点数为N,若N为奇数,则叶子结点数为(N+1)/2;若N为偶数,则叶子结点数为N/2。

38. 设有下列二叉树,对此二叉树中序遍历的结果是(B)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA39.已知二叉树后序遍历序列是dabec,中序遍历序列debac,它的前序遍历序列是(cedba)40. 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为(DGEBHFCA)41.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(gdbehfca)42. 串的长度是(串中所含字符的个数)43.设有两个串p和q,求q在p中首次出现位置的运算称做(模式匹配)44. N个顶点的连通图中边的条数至少为(N-1)45.N个顶点的强连通图的边数至少有(N)46.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(N)47. 最简单的交换排序方法是(冒泡排序)48.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为(n(n-1)/2)49. 在待排序的元素序列基本有序的前提下,效率最高的排序方法是(冒泡排序)50. 在最坏情况下,下列顺序方法中时间复杂度最小的是(堆排序)51. 希尔排序法属于(插入类排序)52. 堆排序法属于(选择类排序)53. 在下列几种排序方法中,要求内存量最大的是(归并排序)54. 已知数据表A中每个元素距其最终位置不远,为节省时间,应采用(直接插入排序)55. 算法的基本特征是可行性、确定性、有穷性和拥有足够的情报。

1.一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。

1. 算法的复杂度主要包括时间复杂度和空间复杂度。

2. 实现算法所需的存储单元多少和算法的工作量大小分别称为算法的空间复杂度和时间复杂度。

3.所谓数据处理是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。

4.数据结构是指相互有关联的数据元素的集合。

5.数据结构分为逻辑结构与存储结构,线性链表属于存储结构。

6.数据结构包括数据的逻辑结构和数据的存储结构。

7. 数据结构包括数据的逻辑结构、数据的存储结构以及对数据的操作运算。

8.数据元素之间的任何关系都可以用前趋和后继关系来描述。

9.数据的逻辑结构有线性结构和非线性结构两大类。

10.常用的存储结构有顺序、链接、索引等存储结构。

11. 顺序存储方法是把逻辑上相邻的结点存储在物理位置相邻的存储单元中。

12. 栈的基本运算有三种:入栈、退栈与读栈顶元素。

13. 队列主要有两种基本运算:入队运算与退队运算。

14. 在实际应用中,带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。

15.栈和队列通常采用的存储结构是链式存储和顺序存储。

16.当线性表采用顺序存储结构实现存储时,其主要特点是逻辑结构中相邻的结点在存储结构中仍相邻。

17. 循环队列主要有两种基本运算:入队运算与退队运算。

每进行一次入队运算,队尾指针就进1 。

18.当循环队列非空且队尾指针等于对头指针时,说明循环队列已满,不能进行入队运算。

这种情况称为上溢。

19.当循环队列为空时,不能进行退队运算,这种情况称为下溢。

20. 在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有18 个元素。

注:当rear<front时,元素个数=总容量-(front-rear);当rear>front时,元素个数=rear-front。

1.判断链表是否存在环型链表问题:判断一个链表是否存在环,例如下面这个链表就存在一个环:例如N1->N2->N3->N4->N5->N2就是一个有环的链表,环的开始结点是N5这里有一个比较简单的解法。

设置两个指针p1,p2。

每次循环p1向前走一步,p2向前走两步。

相关文档
最新文档