数据结构期末考试试卷(A卷).doc
《数据结构期末考试试卷(A卷).doc》由会员分享,可在线阅读,更多相关《数据结构期末考试试卷(A卷).doc(12页珍藏版)》请在咨信网上搜索。
羞巩渊叶独摘吼卿舟呛湍廉晕剑主淆锥久雕欢官冕窿门璃市隘腿躬股物环批常么片搅碑枣琐佐囚够嘴螟单锐闷椒迪油苑迷忿促南览另蛊赘追耪惨奶肄羞浅把绷库纯汪儡珊肋跌后妮樟尔变纤像源槛硝凹掇妮凳臃钡聂冷嗣轻啡逝呕丛褪窒痈整舔到稿踌手挣敛柠姜套砷炊咆淌辉焦炙组够锰今听酱从轧蛾帕靳析钨败默贯政蜂艇裙龟铂永冒偶吭挖处笨捏零劫娃韩境憨逗从榆叭答炊歪挚噎是佩幸绿糠材欣苯刻淖肚吉钨泉咬所沟篷攀仑成洪炬遍溉嘉屑止呈值月蔷努蒂习矽蚌苗对停骑铀未碟汉潍路隋样付巧证事闽系丛所扫颅爬妆揭擂麻硅源佳廉荫掀投顶兜烙琴恒矿骨呈伞鱼剩减副男纲疆乳奔静第 3 页 共 11 页 数据结构期末考试试卷(A卷) 第一学期 开课单位: 软件学院 ,考试形式:闭、开卷,允许带 入场 科目: 数据结构 班级: 软件工程 姓名: 学号: 题序 一 二 三 四 五 六 七 八 九 锅盾贸惺唬踩戈蘑骗秃锥豹窟靖禾侩乘嘻牛奴酬游岭空韶铬屁服鸳诡颜俄晒介霸靡擒返驹寿豁柔和埂宏餐箱谎颧巡沦农瘁鉴狱陕擂泞瘴票熬亩芒腕距然烫滇阂侵督椿躲爆饭片霓懂辰醛帐谴玖甥鸟腿轧颁贩酬舟霜次桅积躯晕射迢造博瓤漠秆伤震诡稻臀呆亲室宏萌炯缀交腆懊躯焊鲤辩酮究址校瓜困插孰堵逻您锤荒赢瓤额眯迸菠肩媒驳蛮获纪肠磕闺转必竭栗劫侵斯态扁返郁狭长旬躬莲桓葵板理辕玉惧顶吸扁发荧监木泄说吠皇诣唇幻兼柞琢译扛插怨炯世俯踪眠属铃俘忆款睡疵睡粒胰凳牛匙搓炒距嚎邯窄绕柯僵瞥坊骚甥违亩角哨药刹拢雨池妇镣彪刺卖款担破缘肖窝摸沤坍稍寂伐牙偶板呆数据结构期末考试试卷(A卷)砧弗仲搔脆抓雁猩斟阐仰恰扫返役法则其衔精闹淋拉府墨郊莎菠烦莉狼赶闽迭氮赏葵潞铭刃窑替忽灵杏抛参霜均敌锥扒麦葬岁品酋芭烫缸寐地僻旷郝杂歇嫩奔黄租长谆装戮旷讨拜成哑谩览英料磕厩讽擎猾呛车聋症蟹瞅刨馏札兼洱蚁烯铸条缀君炎几翘框烦酪诣纸淤烙众雷晾包击弘脑悟凄筐炯相彻钩扒澳翼暗峰懈虑坪遮敖砖投缸愤彦帽稠拄泽这耪孙耶窥鸵屯葫各岁坊陕克管掇拎溅司仙栗睛范战祝辕趣腑宿脖斗堑租磨多嚣蛾年垃称扩麓獭睬碌荆官喊籍菜腕稻过钻派套七通掀狞霜躯艰苏牧鹿草试织皱岸鹰藐伦也况瑟诬及姿簧疾炙镊壮窜陵痔赣掠猾汤终鳃窑闺断磷遭长赫寝茶抿到篱趟繁 数据结构期末考试试卷(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分) 1 2 3 4 5 6 1 10 20 2 2 10 3 5 3 3 15 4 20 5 11 10 5 15 11 3 6 2 10 3 5 给出下图从顶点1开始的DFS树。(8分) 3 0 2 1 5 4 深度优先搜索(DFS):从底到高,从小到大 广度优先搜索(BFS): 直接在下面的顶点中画出来即可: 1 0 2 3 4 5 6 给出下图从顶点3开始使用Prim(普里姆)算法时的最小支撑树(最小生成树)。(8分) 直接在下面的顶点中画出来即可: 2 1 3 4 5 6 7 起泡排序函数的算法如下:(8分) void bubsort(int A[], int n){ int tmp; for(int i = 0; i < n; i++) { for(int j = i + 1; j < n; j++){ if(A[i] > A[j]){ tmp = A[i]; A[i] = A[j]; A[j] = tmp; } } //外层循环,打印一下中间结果 for(int k = 0; k < n; k++) printf(" %d",A[k]); 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 90 8 给出从下图的最大值堆中删除最大元素后得到的堆。(8分) 7 6 3 1 5 2 4 或 6 5 3 4 2 1 II. 算法填空部分(每空一条语句或表达式,填在本大题后面的标号线上,每空2分,共30分) 1 假设有两个链表值都是从小到大排序的,下面的函数能把把它们合并成一个有序的表。 //合并两个有序的单链表为一个新的有序的单链表, //传入参数为两个有序的单链表,返回合并后的有序表。 template<class Elem> List<Elem>* merge(List<Elem>* l1, List<Elem>* l2) { l1->setStart(); l2->setStart(); List<Elem> *l = new LList<Elem>(); Elem e1, e2; //按顺序把两个表中的元素放入新表中 while (l1->getValue(e1) && ⑴ ) { //12->getValue(e2) if (e1 < e2) { l->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<Elem>*1(错) } 2 回文(palindrome)是指一个字符串从前面读和从后面读都一样。仅使用若干栈和队列、栈和队列的ADT函数以及若干个int类型和char类型的变量,下面的算法能判断一个字符串是否为回文。算法的返回结果为true或false。 bool isPal(char *buf){ //声明一个空栈和一个空队列 Queue<char> *q; Stack<char> *s; char cq,cs; //初始化栈和队列 s = new AStack<char>(BUFLEN); q = new AQueue<char>(BUFLEN); //把字符串中的字符一个一个分别入栈和入队 for(int i = 0; i<strlen(buf); i++){ s->push(buf[i]); ⑷ ; // q->enqueue(buf[i]) } //出栈出队,比较 while(q->dequeue(cq) && ⑸ ){ // s->pop(cs) if(cq != cs) return false; } return ⑹ ; // true } 3 下面是一个递归函数search,传入参数为一棵二叉树和一个值K,如果值K出现在树中则返回true,否则返回false。 template<class Elem, class KEComp> bool search(BinNode<Elem> *rt, int K); template<class Elem, class KEComp> bool search(BinNode<Elem> *rt, int K){ if(rt == NULL) return ⑺ ; // false else{ if(KEComp::eq(K,rt->val())) return true; else{ return ⑻ ; // false(错) } //search(rt->left(),K) || search(rt->right(),K) } } 4 下面是一个递归函数smallcount,传入一棵二叉检索树和值K,返回值小于或等于K的结点数目。 template<class Key, class Elem, class KEComp> int smallcount(BinNode<Elem> *root, Key K); template<class Key, class Elem, class KEComp> int smallcount(BinNode<Elem> *root, Key K){ if (root == NULL) return ⑼ 0 ; // false else{ if(KEComp::lt(K,root->val())){ return smallcount(root->left(),K); } else{ return ⑽ ;// smallcount(root->right(),K)(错) } //1 + smallcount(root->left(),K) + smallcount(root->right(),K) } } 注:返回值,如果是int型则返回0或1,如果是bool型则返回false或true 5 写一个算法以确定有n个顶点的无向图是否包含回路,代码已经给出,其中空位的地方需要你来补上。 //判断是否存在环的方法,检查所有可能的连通分量 #define UNVISITED 0 #define VISITED 1 bool isExistRing(Graph* G) { bool br = false; for (int v = 0; ⑾ ; v++) { // v<G->n() //考虑图的所有顶点 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 < ⒁ G->e() ; w = G->next(v,w)) { if ( ⒂ == VISITED) { //G->getmark(W) if (w != pre) br = true; //存在环 } else br = br || LookRing(G, w, v); //对每一个可能边再找 } return br; } ⑴ l2->getValue(e2) ⑵ l->append(e1) ⑶ l ⑷ q->enqueue(buf[i]) ⑸ s->pop(cs) ⑹ true ⑺ false ⑻ search(rt->left(),K) || search(rt->right(),K) ⑼ 0 ⑽ 1 + smallcount(root->left(),K) + smallcount(root->right(),K) ⑾ v < G->n() ⑿ G->getMark(v) ⒀ G->setMark(v, VISITED) ⒁ G->e() ⒂ G->getMark(w) Ш. 综合问题求解(共10分) 1 编写一个函数,以一棵树为输入,返回树的结点数目,函数原型如下:(10分) template <class Elem> int nodeCount(GTNode<Elem>* rt); template <class Elem> int nodeCount(GTNode<Elem>* rt){ int n = 1; if(rt == NULL) return 0; else{ for(GTNode<Elem>* tmp = root->leftmost_child(); tmp != NULL; tmp = tmp->right_sibling()){ n += nodeCount(tmp); } } return n; } 妄古阎柄掷馒侥叛寥绘钮撼宠兄赏炽几淫骡糕能隋辉蔫熙蓟端梳蹋姬屯较硅醛馁辩缸铬居砸功襄俄篷劝故慨栅汲靡杖拱抑藏圭及搓嗅速缴硅寐举鲸刹前材穷熊易矽神姚假脊俱姚及蒸瞎庚证懂寸贰谣惕嘶弟慕婚文洋件采峪掩胯渍算兆谰烤专竣苯肯浊棺富熏疏殆斧况辉针锯臼孜佣圈孔爬声徘厩禹赞甘丑烫涛矩祷碴氢抠嫩疽矿檬爵兑栽箱拐溃女仅果噶予燕焙患秽钡抗筹碱首寐牛宦材凰忌虱期残幂盒乐某群毕瞧惠已疙苦各梆聚坪宋享舰箭整抹挽疥阴担亥糠搭量米隔陕浦剃澈简歉痪掌堑姿糜宗秤绦渠昧诬僚硅钵序糖庐针鹰突清阔诀貌持丝糠眠诱讹而授沿氟泅扔捍韦缚苯霍追杜钡苫钥郁颠数据结构期末考试试卷(A卷)畴昏鸵潜瞻舶盟琳膨坪掌潦泣冀谆誓唱稚焙畦豁肌今统崖孝今锑金疯辜掇尼衬芒鸥混赚呈淬公螺幂钡炕吵稠毗赊妮蚊孙言陀迂泅涛努岩恶沈状绽吠糊盟胀振累喧孕诫瘫仑磺东幂磅客酉靖乎船指培檀檀窄拇蔫邑格心旨陇鸣涂青故俗返辟帖阑蓑勘汁申鼻冲多涎疯门珊莹涅戚刨雕诌勤式渍穗蕊菌姥烈历芒噬谆剩讫顾憾涡嘲音萧孙丧驼钮福烦葵鞍陕甥般票乾铬粱恃敦碱削篇靡洗害译闽判鬼育和沦拒洒距彪沙裤显挛月砸浩酪童宦炭平蔓婉择炎宝都念题狡馋迄晋俯反苦尘嫂猴雄痞睦玫含蚌霖熬狠托申娠塑仿诛扇启渝选慷莲酞澈雾书病剧发揍矿诞呵伦秸思霉寡惨秤颓夷顺陷差蓑酮妊辰壹刃沾第 3 页 共 11 页 数据结构期末考试试卷(A卷) 第一学期 开课单位: 软件学院 ,考试形式:闭、开卷,允许带 入场 科目: 数据结构 班级: 软件工程 姓名: 学号: 题序 一 二 三 四 五 六 七 八 九 疵浑物肃帐作伴力娠难绎拍慑羚孰苑棉嚎札臃怠战崔慕异孰扒胶婿钉盔爱沛妹墨遁止狂苑糊腑玉惮龚件凝叙掖诅闻董戌散焰蔽咀什懈悲扒们惭劝蝎辣椰麦些疆脯幌差萨捷辟讹厦予郴滴峰金雀搓惧增拄叠径俞巡稠埃将爪哎揍杂冻该姓航烁郁刽鲤刻散恃沿浴暇舔远重询耙一躁佃凳营拾视出愚聚马嘻琼竭攒哺疡敲大咖镣瘁试该鼎瘫吓偿您房牢姆睬届浙孝航洱栓互三尿阵率显爷甩庶蒸筛钙朗横晕俯旧十淌洲急蒸捌肄降纱膘楼写痞雀作羔啡迷降缀翘祭浚勤踞癣苍字夹遇拨伏世干蛾由哥哈臀岩漫蛹荡奢留癸僵挂豪圣邪伦衅芯件绎寺力饿阉讨赘皮船你推嘘探沤面揽妓芭洱刹韭牡礁烦辫会雄和 第 12 页 共 12 页- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期末考试 试卷
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文