93學年上學期資料結構期中考參考解答(總分110分,滿分100分).doc

93學年上學期資料結構期中考參考解答(總分110分,滿分100分).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
93學年上學期資料結構期中考參考解答(總分110分,滿分100分).doc

93學年上學期 資料結構 期中考參考解答 (總分110分,滿分100分) 1. Please describe the five phases of program development process. (10%) (Hint: System life cycle in page 1) ANS: (課本1-1) 1. Requirement: 依據專案目的的規格書,獲得輸入和輸出的資訊 2. Analysis: 主要有兩種:由下而上與由上而下 3. Design: 設計者從程式所需要的資料物件和資料的運算兩方面來設計系統 4. Refinement and coding: 為每個資料物件選擇表示法,並撰寫他的各種運算之演算法 5. Verification: 以不同的資料測試程式,並改正錯誤 2. Please write down the output of the following program in C. (10%) #include stdio.h tower(int n, char a, char b, char c, char d){ switch(n) { case 0: break; case 1: printf(%c-%c\n, a, d); break; default: tower(n-2, a, c, d, b); tower(1, a, b, d, c); tower(1, a, b, c, d); tower(1, c, b, a, d); tower(n-2, b, c, a, d); } } main(){ tower(6,A,B,C,D); } ANS:共有21步 A-B; A-C; B-C; A-D; A-B; D-B; C-A; C-B; A-B; A-C; A-D; C-D; B-D; B-C; D-C; B-A; B-D; A-D; C-B; C-D; B-D; 3. Reordering the following complexity from smallest to largest: (5%) n log2 (n) n + n2 + n3 24 ANS: C D A B 4. Please fill the blank for the time complexity (both worst case and best case) of the following codes in the Θ notation, such as Θ(1), Θ(log n), Θ(n), Θ(n log n), Θ(n2), Θ(n3), Θ(2n), and so on. (20%) (a) Matrix addition. The matrix size is n by n. (4%) void add( int a[ ] [n], int b[ ] [n], int c[ ] [n]) { int i, j; for (i = 0; i n; i++) for (j= 0; j n; j++) c[i][j] = a[i][j] +b[i][j]; } Worst case: Θ(n2) . Best case: Θ(n2) . (b) Binary Search, “binsearch(list, searchnum, 0, n-1)” (4%) int binsearch(int list[], int searchnum, int left, int right) {// search list[0]= list[1]=...=list[n-1] for searchnum int middle; if (left= right){ middle= (left+ right)/2; switch(compare(list[middle], searchnum)){ case -1:return binsearch(list, searchnum, middle+1, right); case 0: return middle; case 1: return binsearch(list, searchnum, left, middle- 1); } } return -1; } Worst case: Θ(log n) . Best case: Θ(1) . (c) Sequential Search, “seqSearch(list, n,

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档