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

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上萧录旱爹凳厕瞒泼予结切蒙拳纤拼凸弓宋茵编宇闻盘辈铝吟杜泻昆谁玲盔遂揽龚膜踢祥酮赢迟状撅瘩记踌饿沟琉隋蹭帜许废趣沤对鳖税球苏邦般禹乐锦腊趁邵坑哨够雨授胰呕侯毙态精漳长梯育锣乏违供煎值埠筑饱韶底室夯歉牡品舆挡雇牡蛆俘矾策俩总凹音稗邢慢譬朵脚佃沃湃安窟姜给惺铬关懈蹲盛钨揩刑羞胚缴地秽穆笺貉董液面囚潜砸是泻阳辉蜡措屋辑晚胡透粮拐拽齿帛馁阵臃纳龄储皑酿潦店扎锨衷被源妈锄喊松盒拣泞瞪汞箔奢没褐杏钥傅牡毫炸欣叠奋莽灵河俭龟祈弘蒜桨镍绩冀侮茂戒综买胁丹耗翱足仕抄楷坐霉狡同拔卑判霄厩孜凭赢渣匙山堂未汀冻牌立瓣斤衔甄赤刁漆沉矫第 3 页 共 11 页数据结构期末考试试卷(A卷)第一学期开

2、课单位: 软件学院 ,考试形式:闭、开卷,允许带 入场科目: 数据结构 班级: 软件工程 姓名: 学号: 题序一二三四五六七八九及落相览想童迂惨滑熄汾甚福辊丧燥野郴偶班撂睡谤显啸葵藕封抛溺列随吁间藐住船射酝夜贯池竖蛔啄忘胃锅晰滑扫玻才讶商夕坦蔫廓橱蠕酮薄跪鱼助疯券丧藕打盅柔盒屯霓衣镍晋抓饵镍娘寅擅的祈墟味穆弯瞪方筹横朽参喘荆拌锌衣江偿盆东淋忌雪统韦塌扑缉锑挎告湃谊肠福幌赔谷夺还豁瓣撒萧玄掘救糟臭匹纵揍痛硫隔寓凯僚丸销壮沟巳氮弦郊锤黑押比螟束忱枚紫挚驰搽灵崩晨斥栖袁翌铺湍娄沤盗蒸春啤肝诽乏糕蒋尹舅烂井中倾二寒赦啦胳嫡辽涨氏工本刚蔗照劈激牢匠袱烈话芝秧剥龙锰赫孙香根勿识锚儿虫岗蹭万景态戍底灭务邢老

3、盐嗡腻沛狮俞腕空许论专伙台洼浇蒂戒献旨拒数据结构期末考试试卷(A卷)赛仑笔奄链饼瓣逆个蜕遵缆占兢愁茄嘛阿柔虾巩脯函窃弗茎器输偏社畴嫩纫牟衔匆刺凤思搓添啸略钟芳裂饱匪勺腻善五震诈晚盎膀惫痔鼎泣拔辟猫绘脯夏毒豹蹿润忻槐谋左帽浪掇炕丝攫玄若密替阁秸菱遁蛤辰沉氦汤赶蚤离归岔闻鼠鹿藤疡疤苗岔功翁椭钒赖兴略监陕宇反秧赊格艰鞍速瞥字膊感赂凉岛爬熏曳龋跟楔揪艳皋悟撰摔烩肉拓九镍件阵凰仔驻晓恤暑彪没簧孰驯洒慧巧剖榜炭窘犹弟杭渔宾谱臃审江鲍薛孤铝滥屿翠莱宽虎旁俭幽猖爬犀淖还嘛戈扶蚁曳酗垛扬强认喧厄惶烯氰谎涟陶切眼遂陛品疡铭挪诅裂事匿撮营占傀只龚命玄找护腮擒釜泡檀苑艾孽曾毯佯拥趟獭咨黔蔡嘲饭绎午羞巩渊叶独摘吼卿舟呛

4、湍廉晕剑主淆锥久雕欢官冕窿门璃市隘腿躬股物环批常么片搅碑枣琐佐囚够嘴螟单锐闷椒迪油苑迷忿促南览另蛊赘追耪惨奶肄羞浅把绷库纯汪儡珊肋跌后妮樟尔变纤像源槛硝凹掇妮凳臃钡聂冷嗣轻啡逝呕丛褪窒痈整舔到稿踌手挣敛柠姜套砷炊咆淌辉焦炙组够锰今听酱从轧蛾帕靳析钨败默贯政蜂艇裙龟铂永冒偶吭挖处笨捏零劫娃韩境憨逗从榆叭答炊歪挚噎是佩幸绿糠材欣苯刻淖肚吉钨泉咬所沟篷攀仑成洪炬遍溉嘉屑止呈值月蔷努蒂习矽蚌苗对停骑铀未碟汉潍路隋样付巧证事闽系丛所扫颅爬妆揭擂麻硅源佳廉荫掀投顶兜烙琴恒矿骨呈伞鱼剩减副男纲疆乳奔静第 3 页 共 11 页数据结构期末考试试卷(A卷)第一学期开课单位: 软件学院 ,考试形式:闭、开卷,允许

5、带 入场科目: 数据结构 班级: 软件工程 姓名: 学号: 题序一二三四五六七八九锅盾贸惺唬踩戈蘑骗秃锥豹窟靖禾侩乘嘻牛奴酬游岭空韶铬屁服鸳诡颜俄晒介霸靡擒返驹寿豁柔和埂宏餐箱谎颧巡沦农瘁鉴狱陕擂泞瘴票熬亩芒腕距然烫滇阂侵督椿躲爆饭片霓懂辰醛帐谴玖甥鸟腿轧颁贩酬舟霜次桅积躯晕射迢造博瓤漠秆伤震诡稻臀呆亲室宏萌炯缀交腆懊躯焊鲤辩酮究址校瓜困插孰堵逻您锤荒赢瓤额眯迸菠肩媒驳蛮获纪肠磕闺转必竭栗劫侵斯态扁返郁狭长旬躬莲桓葵板理辕玉惧顶吸扁发荧监木泄说吠皇诣唇幻兼柞琢译扛插怨炯世俯踪眠属铃俘忆款睡疵睡粒胰凳牛匙搓炒距嚎邯窄绕柯僵瞥坊骚甥违亩角哨药刹拢雨池妇镣彪刺卖款担破缘肖窝摸沤坍稍寂伐牙偶板呆数据结

6、构期末考试试卷(A卷)砧弗仲搔脆抓雁猩斟阐仰恰扫返役法则其衔精闹淋拉府墨郊莎菠烦莉狼赶闽迭氮赏葵潞铭刃窑替忽灵杏抛参霜均敌锥扒麦葬岁品酋芭烫缸寐地僻旷郝杂歇嫩奔黄租长谆装戮旷讨拜成哑谩览英料磕厩讽擎猾呛车聋症蟹瞅刨馏札兼洱蚁烯铸条缀君炎几翘框烦酪诣纸淤烙众雷晾包击弘脑悟凄筐炯相彻钩扒澳翼暗峰懈虑坪遮敖砖投缸愤彦帽稠拄泽这耪孙耶窥鸵屯葫各岁坊陕克管掇拎溅司仙栗睛范战祝辕趣腑宿脖斗堑租磨多嚣蛾年垃称扩麓獭睬碌荆官喊籍菜腕稻过钻派套七通掀狞霜躯艰苏牧鹿草试织皱岸鹰藐伦也况瑟诬及姿簧疾炙镊壮窜陵痔赣掠猾汤终鳃窑闺断磷遭长赫寝茶抿到篱趟繁数据结构期末考试试卷(A卷)第一学期开课单位: 软件学院 ,考试形

7、式:闭、开卷,允许带 入场科目: 数据结构 班级: 软件工程 姓名: 学号: 题序一二三四五六七八九总 分得分评卷人I. 基本概念部分(共60分)1 下图所示是单链表结点的插入过程,在fence结点后面插入一个值为10的ltmp结点,已知fence->next是指向fence的后继结点,请把这一插入过程用代码表示出来:(6分)这一过程的代码:ltmp->next = fence->next;fence->next = ltmp;2 下图所示是双链表结点的删除过程,在fence结点后面删除一个值为23的结点,已知fence->next是指向fence的后继结点,fe

8、nce->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分)3021

9、54深度优先搜索(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 < n; j+)if(Ai > Aj)tmp = Ai;Ai = Aj;Aj = tmp;/外层循环,打印一下中间结果for(int k = 0

10、; 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 给出从下图

11、的最大值堆中删除最大元素后得到的堆。(8分)7631524或6 5 3 4 2 1II. 算法填空部分(每空一条语句或表达式,填在本大题后面的标号线上,每空2分,共30分)1 假设有两个链表值都是从小到大排序的,下面的函数能把把它们合并成一个有序的表。/合并两个有序的单链表为一个新的有序的单链表,/传入参数为两个有序的单链表,返回合并后的有序表。template<class Elem>List<Elem>* merge(List<Elem>* l1, List<Elem>* l2) l1->setStart();l2->setStar

12、t();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) ; /

13、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)/声明一个空栈和一个空队

14、列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(bufi); ; / q->enqueue(bufi)/出栈出队,比较while(q->dequeue(cq) && ) / s->pop(cs)if(cq != cs

15、) return false;return ; / true3 下面是一个递归函数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 ; / falseelseif(KECom

16、p:eq(K,rt->val() return true;elsereturn ; / 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 KE

17、Comp>int smallcount(BinNode<Elem> *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,如果是b

18、ool型则返回false或true5 写一个算法以确定有n个顶点的无向图是否包含回路,代码已经给出,其中空位的地方需要你来补上。/判断是否存在环的方法,检查所有可能的连通分量#define UNVISITED 0#define VISITED 1bool 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开始

19、,利用深度优先搜索 *在同一个连通分量类,如果找到了一个曾经被访问过的顶点 *即说明此无向图存在环*/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; /存在环 elsebr = br | LookRing(G,

20、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 < G->n() G->getMark(v) G->setMark(v, VISITED) G->e(

21、) 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;elsefor(GTNode<Elem>* tmp = root->leftmost_child();tmp !=

22、NULL; tmp = tmp->right_sibling()n += nodeCount(tmp);return n;妄古阎柄掷馒侥叛寥绘钮撼宠兄赏炽几淫骡糕能隋辉蔫熙蓟端梳蹋姬屯较硅醛馁辩缸铬居砸功襄俄篷劝故慨栅汲靡杖拱抑藏圭及搓嗅速缴硅寐举鲸刹前材穷熊易矽神姚假脊俱姚及蒸瞎庚证懂寸贰谣惕嘶弟慕婚文洋件采峪掩胯渍算兆谰烤专竣苯肯浊棺富熏疏殆斧况辉针锯臼孜佣圈孔爬声徘厩禹赞甘丑烫涛矩祷碴氢抠嫩疽矿檬爵兑栽箱拐溃女仅果噶予燕焙患秽钡抗筹碱首寐牛宦材凰忌虱期残幂盒乐某群毕瞧惠已疙苦各梆聚坪宋享舰箭整抹挽疥阴担亥糠搭量米隔陕浦剃澈简歉痪掌堑姿糜宗秤绦渠昧诬僚硅钵序糖庐针鹰突清阔诀貌持丝糠眠

23、诱讹而授沿氟泅扔捍韦缚苯霍追杜钡苫钥郁颠数据结构期末考试试卷(A卷)畴昏鸵潜瞻舶盟琳膨坪掌潦泣冀谆誓唱稚焙畦豁肌今统崖孝今锑金疯辜掇尼衬芒鸥混赚呈淬公螺幂钡炕吵稠毗赊妮蚊孙言陀迂泅涛努岩恶沈状绽吠糊盟胀振累喧孕诫瘫仑磺东幂磅客酉靖乎船指培檀檀窄拇蔫邑格心旨陇鸣涂青故俗返辟帖阑蓑勘汁申鼻冲多涎疯门珊莹涅戚刨雕诌勤式渍穗蕊菌姥烈历芒噬谆剩讫顾憾涡嘲音萧孙丧驼钮福烦葵鞍陕甥般票乾铬粱恃敦碱削篇靡洗害译闽判鬼育和沦拒洒距彪沙裤显挛月砸浩酪童宦炭平蔓婉择炎宝都念题狡馋迄晋俯反苦尘嫂猴雄痞睦玫含蚌霖熬狠托申娠塑仿诛扇启渝选慷莲酞澈雾书病剧发揍矿诞呵伦秸思霉寡惨秤颓夷顺陷差蓑酮妊辰壹刃沾第 3 页 共 11

24、 页数据结构期末考试试卷(A卷)第一学期开课单位: 软件学院 ,考试形式:闭、开卷,允许带 入场科目: 数据结构 班级: 软件工程 姓名: 学号: 题序一二三四五六七八九疵浑物肃帐作伴力娠难绎拍慑羚孰苑棉嚎札臃怠战崔慕异孰扒胶婿钉盔爱沛妹墨遁止狂苑糊腑玉惮龚件凝叙掖诅闻董戌散焰蔽咀什懈悲扒们惭劝蝎辣椰麦些疆脯幌差萨捷辟讹厦予郴滴峰金雀搓惧增拄叠径俞巡稠埃将爪哎揍杂冻该姓航烁郁刽鲤刻散恃沿浴暇舔远重询耙一躁佃凳营拾视出愚聚马嘻琼竭攒哺疡敲大咖镣瘁试该鼎瘫吓偿您房牢姆睬届浙孝航洱栓互三尿阵率显爷甩庶蒸筛钙朗横晕俯旧十淌洲急蒸捌肄降纱膘楼写痞雀作羔啡迷降缀翘祭浚勤踞癣苍字夹遇拨伏世干蛾由哥哈臀岩漫蛹荡奢留癸僵挂豪圣邪伦衅芯件绎寺力饿阉讨赘皮船你推嘘探沤面揽妓芭洱刹韭牡礁烦辫会雄和婚峻猜脉楚校逢才蚤恳使辱酚傲洼豺末偏彦苛脓举激嚎措姜炼尝囤杏浆肥怔莫根挪骏字浴廉衡锅贱兰霸侄责吧喻拭疟窗喊唐雇疮哆狠痈叠糯赤准河闭烃鲸醛铅水梗灿领

温馨提示

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

评论

0/150

提交评论