数据结构期末考试试卷(A卷)_第1页
数据结构期末考试试卷(A卷)_第2页
数据结构期末考试试卷(A卷)_第3页
数据结构期末考试试卷(A卷)_第4页
数据结构期末考试试卷(A卷)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构期末考试试卷(A卷)第一学期开课单位: 软件学院 ,考试形式:闭、开卷,允许带 入场科目: 数据结构 班级: 软件工程 姓名: 学号: 题序一二三四五六七八九总 分得分评卷人I. 基本概念部分(共60分)1 下图所示是单链表结点的插入过程,在fence结点后面插入一个值为10的ltmp结点,已知fence-next是指向fence的后继结点,请把这一插入过程用代码表示出来:(6分)这一过程的代码:ltmp-next = fence-next;fence-next = ltmp;2 下图所示是双链表结点的删除过程,在fence结点后面删除一个值为23的结点,已知fence-next是指向fence的后继结点,fence-prev是指向fence的前驱结点,ltmp是一个值为NULL的链表结点指针,请把这一删除过程用代码表示出来:(8分)这一过程的代码:ltmp = fence-next;fence-next = ltmp-next;ltmp-next-prev = fence;3 画出下图中的BST加上值5以后的形状。(6分)4 画出下图所示图的相邻矩阵表示(假设下面的表格是一个二维数组,请在表格中填入正确的数值)。(8分)12345611020221035331542051110515113621035 给出下图从顶点1开始的DFS树。(8分)302154深度优先搜索(DFS):从底到高,从小到大广度优先搜索(BFS):直接在下面的顶点中画出来即可:1023456 给出下图从顶点3开始使用Prim(普里姆)算法时的最小支撑树(最小生成树)。(8分)直接在下面的顶点中画出来即可:2134567 起泡排序函数的算法如下:(8分)void bubsort(int A, int n)int tmp;for(int i = 0; i n; i+)for(int j = i + 1; j Aj)tmp = Ai;Ai = Aj;Aj = tmp;/外层循环,打印一下中间结果for(int k = 0; k n; k+) printf( %d,Ak);printf(n);对数组int A = 9, 12,3,7,90,15;应用上面的排序算法进行排序的部分中间打印结果如下,请补充使之完整:第0次外层循环的中间结果: 3 12 9 7 90 15第1次外层循环的中间结果: 3 7 12 9 90 15第2次外层循环的中间结果: 3 7 9 12 90 15第3次外层循环的中间结果: 3 7 9 12 90 15第4次外层循环的中间结果: 3 7 9 12 15 90第5次外层循环的中间结果: 3 7 9 12 15 908 给出从下图的最大值堆中删除最大元素后得到的堆。(8分)7631524或6 5 3 4 2 1II. 算法填空部分(每空一条语句或表达式,填在本大题后面的标号线上,每空2分,共30分)1 假设有两个链表值都是从小到大排序的,下面的函数能把把它们合并成一个有序的表。/合并两个有序的单链表为一个新的有序的单链表,/传入参数为两个有序的单链表,返回合并后的有序表。templateList* merge(List* l1, List* l2) l1-setStart();l2-setStart();List *l = new LList();Elem e1, e2;/按顺序把两个表中的元素放入新表中while (l1-getValue(e1) & ) /12-getValue(e2)if (e1 append(e1);l1-next(); else l-append(e2); l2-next(); /end if-else/end while/如果表l1不为空,则把剩余的元素都放入新表中while (l1-getValue(e1) ; /1-append(e1)l1-next();/如果表l2不为空,则把剩余的元素都放入新表中while (l2-getValue(e2) l-append(e2);l2-next();/返回新生成的表return 1 ; /List*1(错)2 回文(palindrome)是指一个字符串从前面读和从后面读都一样。仅使用若干栈和队列、栈和队列的ADT函数以及若干个int类型和char类型的变量,下面的算法能判断一个字符串是否为回文。算法的返回结果为true或false。bool isPal(char *buf)/声明一个空栈和一个空队列Queue *q;Stack *s;char cq,cs;/初始化栈和队列s = new AStack(BUFLEN);q = new AQueue(BUFLEN);/把字符串中的字符一个一个分别入栈和入队for(int i = 0; ipush(bufi); ; / q-enqueue(bufi)/出栈出队,比较while(q-dequeue(cq) & ) / s-pop(cs)if(cq != cs) return false;return ; / true3 下面是一个递归函数search,传入参数为一棵二叉树和一个值K,如果值K出现在树中则返回true,否则返回false。templatebool search(BinNode *rt, int K);templatebool search(BinNode *rt, int K)if(rt = NULL) return ; / falseelseif(KEComp:eq(K,rt-val() return true;elsereturn ; / false(错) /search(rt-left(),K) | search(rt-right(),K)4 下面是一个递归函数smallcount,传入一棵二叉检索树和值K,返回值小于或等于K的结点数目。templateint smallcount(BinNode *root, Key K);templateint smallcount(BinNode *root, Key K)if (root = NULL) return 0 ; / falseelseif(KEComp:lt(K,root-val()return smallcount(root-left(),K);elsereturn ;/ smallcount(root-right(),K)(错) /1 + smallcount(root-left(),K) + smallcount(root-right(),K)注:返回值,如果是int型则返回0或1,如果是bool型则返回false或true5 写一个算法以确定有n个顶点的无向图是否包含回路,代码已经给出,其中空位的地方需要你来补上。/判断是否存在环的方法,检查所有可能的连通分量#define UNVISITED 0#define VISITED 1bool isExistRing(Graph* G) bool br = false;for (int v = 0; ; v+) / vn()/考虑图的所有顶点if ( = UNVISITED) /G-getmark(v)br = br | LookRing(G, 0, -1);return br;/* * 从顶点pre开始,利用深度优先搜索 *在同一个连通分量类,如果找到了一个曾经被访问过的顶点 *即说明此无向图存在环*/bool LookRing(Graph* G, int v, int pre) bool br = false; G-setmark(v,VISITED) ; /设置该顶点被访问for (int w = G-first(v); w e() ; w = G-next(v,w) if ( = VISITED) /G-getmark(W)if (w != pre)br = true; /存在环 elsebr = br | LookRing(G, w, v); /对每一个可能边再找return br; l2-getValue(e2) l-append(e1) l q-enqueue(bufi) s-pop(cs) true false search(rt-left(),K) | search(rt-right(),K) 0 1 + smallcount(root-left(),K) + smallcount(root-right(),K) v n() G-getMark(v) G-setMark(v, VISITED) G-e() G-getMark(w). 综合问题求解(共10分)1 编写一个函数,以一棵树为输入,返回树的结点数目,函数原型如下:(10分)template int nodeCount(GTNode* rt);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论