算法与数据结构模拟试题及答案

时间:2017-04-19 11:33:57 算法与数据结构答案 我要投稿

算法与数据结构模拟试题及答案

  多做模拟试题对于我们学好算法与数据结构课程很有帮助。以下是阳光网小编要与大家分享的算法与数据结构模拟试题,供大家参考!

算法与数据结构模拟试题及答案

  算法与数据结构模拟试题一、单选题

  1. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是( )。

  A. 单链表 B. 静态链表

  C. 线性链表 D. 顺序存储结构

  2. 用单链表表示的链队的对头在链表的( )位置。

  A. 链头 B. 链尾

  C. 链中 D. 任意

  3. ( )是C语言中的“abcd321ABCD”的子串( )。

  A. abcd B. 321AB

  C. “abcABC” D. “21AB”

  4. 一个n*n的对称矩阵,如果以行或者列为主序放入内存,则容量为(

  A. n*n B. n*n/2

  C. n*(n+1)/2 D. (n+1)2/2

  5. 递归函数f(n)=f(n-1)+n (n>1)递归出口是( )。

  A. f(1)=0 B. f(1)=1

  C. f(0)=1 D. f(n)=n

  6. 有如下递归过程:

  Void reverse (int m)

  ﹛

  Printf (“%d”,n%10);

  If (n/10!=0)

  Reverse (n/10);

  ﹜

  调用语句reverse(582)的结果是( )。

  A. 582 B. 852

  C. 258 D. 285

  7. 树最适合用来表示( )。

  A. 有序数据元素 B. 无序数据元素

  C. 元素之间具有分支层次关系的数据 D. 元素之间无联系的数据

  8. 顺序查找法适合于存储结构为( )的线性表。

  A. 散列存储 B. 顺序存储或链式存储

  C. 压缩存储 D. 索引存储

  算法与数据结构模拟试题二、多选题

  1. 数据是信息的载体,它有( )几种形式。

  A. 整数和实型数 B. 字符串

  C. 图像和声音 D. 信息

  E. 磁盘文件

  2. 在算法分析与数据结构中,算法描述方法有( )。

  A. 自然语言 B. 框图

  C. 类计算机语言 D. 数据结构

  3. 常用的线性表存贮结构有( )。

  A. 顺序存贮结构 B. 链表存贮结构 C. 队列存贮结构 D. 堆栈存贮结构 E. 顺序存贮与链表存贮混合结构 4. 一维数组元素的类型可以是( )。

  A. 简单变量,如整数、浮点数 B. 复合变量,如结构体、数组 C. 只有简单变量 D. 指针变量 E. 字符串

  5. 假设以链表的方式实现堆栈,top为栈顶指针,指向类型为linkstack类型,下述程序 实现将堆栈初始化为空栈的操作。程序( )是正确的。

  A. void INITSTACK( linkstack *top ) { top = NULL;};

  B. void INITSTACK(linkstack * top ) { top = -1;};

  C. void INITSTACK(linkstack * top ) { top = 0;};

  D. void INITSTACK(linkstack * top ) { top =空;};

  6. 下列排序算法中哪些是不稳定的?( )

  A. 冒泡排序 B. 选择排序 C. 快速排序 D. 堆排序

  算法与数据结构模拟试题三、填空题

  1. 数据结构针对数据对象,要研究其___________,逻辑结构及其操作。

  2. 算法设计要求达到以下目标:___________、可读性、健壮性、高效率与低存储要求。 3. 栈的特点是___________,因此栈又称为___________表。 4. 队列的特点是___________,因此队列又称为___________表。

  5. 假定二叉树的数据域为data, 左右子树的指针域分别是lChild和rChild,指向根结点 的指针为t, 完善以下二叉树前序遍历的算法。 Preorder(t) { ___________; ___________; if (t==NULL) return;

  Printf(t->data); }

  6. 冒泡排序算法在最好情况下,比较次数是___________。 7. 针对插入与删除操作,顺序文件效率不高。如果需要在顺序文件上实现插入与删除操作, 解决问题的基本方法是___________。

  8. 下面的算法是从数组a中删除第i个元素起的k个元素。试补充完整程序。 /* ArraySize 指数据的尺寸,last是数据中已有的元素个数.*/ Algorithm delK(int a[ArraySize], int i, int k, int last)

  If (!(( K >= 0) && (1 <= i +k && i +k <= last )&& ( 0 <= last && last <= arrary)) { /* 判断参数合法性 */ Printf(“Error !”); Else

  For (count = 1; count <= k; count++) { /* 删除一个元素 */

  For(j = last; j>= i +1; j--) ___________; Last = last – 1; }}

  算法与数据结构模拟试题四、判断题

  1. 线性表中的元素只能是简单类型。( ) 2. 线性表是数组。( )

  3. 如果入队与出队的操作顺序不同,其输出元素的顺序可以与输入元素的顺序不同。( ) 4. 栈满是数据对象栈的固有操作。( )

  5. 二叉树只有前序、中序和后序三种遍历运算。( )

  6. 数据结构中只研究了二叉树,对一般树没有给出解决问题的算法。( )

  7. 在单向链表中,在X指向的结点后插入结点,对应的方法与X是否是头指针无关。( ) 8. 分块查找时引入了静态查找就是顺序查找、折半查找和分块查找。( )

  9. 在求最短路径的Dijkstra算法和Floyd算法中,Dijkstra算法只能求从一点到其他各 点的最短路径,而Floyd算法可以求图中两点之间的最短路径。( ) 10. 树是一种特殊的图。( )

  算法与数据结构模拟试题五、简答题

  1. 对链表设置头结点的作用是什么?(至少说出两条好处) 2. 在hq的`链队中,设计一个算法求该连队中结点的个数。 3. 假设有如下的结构定义: struct node {

  char data;

  struct node * link; }

  * p, *pre;

  而且pre指向链表中非空元素,写一段程序生成构造p结点,并将其链入到pre之后。 4. 求1到n的平方和(利用递归函数调用) 5. 为什么要采用循环队列?

  算法与数据结构模拟试题参考答案

  一、单项选择题

  badc bdcb

  二、多项选择题

  1.abc

  2.abc

  3.abe

  4.abd

  5.ac

  6.bcd

  三、填空题

  (1)物理结构 (2)正确性 (3)先进后出,先进后出 (4)先进先出,先进先出 (5)Preorder(t->lChild);

  Preorder(t->rChild); (6) n-1 (7)批处理 (8)A[j-1] = a[j]

  四、判断题

  FFFFFFFFFT

  五、简答题

  1 答:其好处有:

  (1)对带头结点的链表,在表的任何接点之前插入结点或删除表中的任何结点,所要做的都是修改前一个结点的指针域,因为任何元素结点都有前驱结点(若链表没有头结点,则首元素结点没有前驱结点,在其前插入结点和删除结点时操作复杂些)。

  (2)对带头结点的链表,表头指针是指向头结点的非空指针,因此空表与非空表的处理是一样的。

  2 答:求该链队中结点个数实际上是计算以hq->front为头指针的单链表中的结点个数。算法如下:

  Int Qucount (Lqueue *hq) {

  SNode *p=hq->front; Int n=0;

  While (p!=NULL) {

  n++;

  P=P->next; }

  Return (n); }

  3 ch=getchar(); //取一个数据元素// p=(struct node *)malloc(sizeof(struct node));

  //申请一个新结点// p->data=ch;

  p->link = pre->link; pre->link = p; 4 答:

  Int sum2(int n) {

  If (n==0)return 0; Return sum2(n-1)+n*n; }

【算法与数据结构模拟试题及答案】相关文章:

1.算法与数据结构试题及答案

2.2017年算法与数据结构模拟试题及答案

3.算法与数据结构模拟试题及参考答案

4.《算法数据结构》期末试题及答案

5.2017年算法与数据结构试题及参考答案

6.大学《算法数据结构》复习试题及答案

7.大学《算法数据结构》试题判断题及答案

8.数据结构试题及答案