




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章 習題答案2、××3、(1)包含改變量定義的最小范圍(2)數據抽象、信息隱蔽(3)數據對象、對象間的關系、一組處理數據的操作(4)指針類型(5)集合結構、線性結構、樹形結構、圖狀結構(6)順序存儲、非順序存儲(7)一對一、一對多、多對多(8)一系列的操作(9)有限性、輸入、可行性4、(1)A(2)C(3)C5、語句頻度為1+(1+2)+(1+2+3)+(1+2+3+n)第二章 習題答案1、(1)一半,插入、刪除的位置(2)順序和鏈式,顯示,隱式(3)一定,不一定(4)頭指針,頭結點的指針域,其前驅的指針域2、(1)A(2)A:E、AB:H、L、I、E、AC:F、MD:
2、L、J、A、G或J、A、G(3)D(4)D(5)C(6)A、C3、頭指針:指向整個鏈表首地址的指針,標示著整個單鏈表的開始。頭結點:為了操作方便,可以在單鏈表的第一個結點之前附設一個結點,該結點的數據域可以存儲一些關于線性表長度的附加信息,也可以什么都不存。首元素結點:線性表中的第一個結點成為首元素結點。4、算法如下:int Linser(SeqList *L,int X int i=0,k;if(L->last>=MAXSIZE-1 printf(“表已滿無法插入”;return(0;while(i<=L->last&&L->elemi i+;f
3、or(k=L->last;k>=I;k-L->elemk+1=L->elemk;L->elemi=X;L->last+;return(1;5、算法如下:#define OK 1#define ERROR 0Int LDel(Seqlist *L,int i,int k int j;if(i<1|(i+k>(L->last+2 printf(“輸入的i,k值不合法”;return ERROR;if(i+k=(L->last+2 L->last=i-2;ruturn OK;elsefor(j=i+k-1;j<=L->la
4、st;j+elemj-k=elemj;L->last=L->last-k;return OK;6、算法如下:#define OK 1#define ERROR 0Int Delet(LInkList L,int mink,int maxk Node *p,*q;p=L;while(p->next!=NULLp=p->next;if(mink next->data>=mink|(p->data<=maxk printf(“參數不合法”;return ERROR;else p=L;while(p->next-data<=minkp=p-&
5、gt;next;while(q->data p->next=q->next;free(q;q=p->next;return OK;9、算法如下:int Dele(Node *S Node *p;P=s->next;If(p= =sprintf(“只有一個結點,不刪除”;return 0;elseif(p->next= =ss->next=s;free(p;return 1;Else while(p->next->next!=sP=p->next;P->next=s;Free(p;return 1;第三章 習題答案2、(1)3、棧
6、有順序棧和鏈棧兩種存儲結構。在順序棧中,棧頂指針top=-1時,棧為空;棧頂指針top=Stacksize-1時,棧為滿。在帶頭結點鏈棧中,棧頂指針top-next=NULL,則代表棧空;只要系統有可用空間,鏈棧就不會出現溢出,既沒有棧滿。5、#include #include "stdio.h"void main( char ch,temp;SeqStack s;InitStack(&s;scanf("%c",&ch;while(ch!=''&&ch!='&' Push(&
7、s,ch;scanf("%c",&ch;while(ch!=''&&!IsEmpty(&s Pop(&s,&temp;scanf("%c",&ch;if(ch!=tempbreak;if(!IsEmpty(&sprintf("no!n"elsescanf("%c",&ch;if(ch='' printf("yes!n"else printf("no!n"12、(1)功能:將
8、棧中元素倒置。(2)功能:刪除棧中的e元素。(3)功能:將隊列中的元素倒置。 第四章習題答案1、StrLength(s操作結果為14;SubString(sub1,s,1,7操作結果為sub1=I AM A ;SubString(sub2,s,7,1操作結果為sub2= ;StrIndex(s,A,4 操作結果為5;StrReplace(s,STUDENT,q 操作結果為I AM A WORKER;StrCat(StrCat(sub1,t, StrCat(sub2,q 操作結果為I AM A GOOD WORKER;2、int StrReplace(SString S,Sstring T,SS
9、tring Vint i=1; /從串S的第一個字符起查找串Tif(StrEmpty(T /T是空串return ERROR;doi=Index(S,T,i; /結果i為從上一個i之后找到的子串T的位置if(i /串S中存在串TStrDelete(S,i,StrLength(T; /刪除該串TStrInsert(S,i,V; /在原串T的位置插入串Vi+=StrLength(V; /在插入的串V后面繼續查找串Twhile(i;return OK;第五章習題答案1、(1)數組A共占用48*6=288個字節;(2)數組A的最后一個元素的地址為1282;(3)按行存儲時loc(A36)=1000+(
10、3-1)*8+6-1*6=1126(4)按列存儲時loc(A36)=1000+(6-1)*6+3-1*6=11929、(1)(a,b)(2)(c,d)(3)(b)(4)b(5)(d)10、D第六章 習題答案1、三個結點的樹的形態有兩個;三個結點的二叉樹的不同形態有5個。2、略3、證明:分支數=n1+2n2+knk (1)n= n0+n1+nk (2)n=分支數+1 (3)將(1)(2)代入(3)得n0= n2+2n3+3n4+(k-1)nk+14、注:C結點作為D的右孩子(畫圖的時候忘記了,不好意思)5、n0=50,n2=n0-1=49,所以至少有99個結點。6、(1)前序和后序相同:只有一個
11、結點的二叉樹(2)中序和后序相同:只有左子樹的二叉樹(3)前序和中序相同:只有右子樹的二叉樹7、證明:n個結點的K叉樹共有nk個鏈域,分支數為n-1(即非空域)。空域=nk-(n-1)=nk-n+18、對應的樹如下: 9、(答案不唯一)哈夫曼樹如下圖所示:哈夫曼編碼如下:頻率 編碼0.07 00100.19 100.02 000000.06 00010.32 010.03 000010.21 110.10 001111、對應的二叉樹如下:12、求下標分別為i和j的兩個桔點的最近公共祖先結點的值。typedef int ElemType;void Ancestor(ElemType A,int
12、n,int i,int jwhile(i!=jif(i>j i=i/2; 聯系電話printf("所查結點的最近公共祖先的下標是%d,值是%d",i,Ai;15、編寫遞歸算法,對于二叉樹中每一個元素值為X的結點,刪去以它為根的子樹,并釋放相應的空間。void Del_Sub(BiTree T if(T->lchild Del_Sub(T->lchild;if(T->rchild Del_Sub(T->rchild;free(T;所處位置 if(T->data=x Del_Sub(T;elseif(T->lchild Del_Sub_
13、x(T->lchild,x;if(T->rchild Del_Sub_x(T->rchild,x;22、int Width(BiTree btif (bt=NULL return (0; elseBiTree p,Q50; int front=1,rear=1,last=1;int temp=0, maxw=0; Qrear=bt; while(front<=lastp=Qfront+; temp+;if (p->lchild!=NULL Q+rear=p->lchild; if (p->rchild!=NULL Q+rear=p->rchild
14、; last=rear; if(temp>maxw maxw=temp;(畝) temp=0;return (maxw;第七章 習題答案1核心區面積(畝)1的入度為3,出度為0;頂點2的入度為2,出度為2;工作人員人數頂點 3 的入度為 ,出度為2;頂點4的入度為1年接待人數3;52,出度為1;直接經營收入頂點的入度為2,出度為3;(2)鄰接矩陣如下:0 0 0 0 0 01 0 0 1 0 00 1 0 0 0 10 0 1 0 1 11 0 0 0 0 01 1 0 0 1 0(3)鄰接表(4)逆鄰接表2、答案不唯一(2)深度優先遍歷該圖所得頂點序列為:1,2,3,4,5,6)(4,
15、5)(5,6)(3)廣度優先遍歷該圖所得頂點序列為:鄉鎮(街道)意見,5,6,3,2, 4 邊的序列為:(1,5)(1,6)(1(蓋章)3 )( 1 , 2 )( 5 , 4 ) 月 3、(1ve(0=0,ve(1=5,ve(2=6, ve(3=12, ve(4=15, ve(5=16,ve(6=16, ve(7=19, ve(8=21, ve(9=23每個事件的最晚發生時間::vl(9=23, vl(8=21, vl(7=19, vl(6=19, vl(5=16, vl(4=15,vl(3=12, vl(2=6, vl(1=9, vl(0=0(2e(4,5=15, e(3,6=12, e(5
16、,8=16, e(4,7=15, e(7,8=19, e(6,9=16, e(8,9=21每個活動的最遲開始時間:(蓋章)(年 月 日1 到其余頂點的最短路經為: 1-市農辦、市旅游局意見1 , 3 ;長度為 15 1-最短路經為1,3,2;長度為191-51 月3,5;長度為1-4最短路經為1,3,2,1- 6 1,3,2,主題詞:農業旅游,6;長度為評定 辦法、略第八章 送:各鄉鎮人民政府(街道辦事處),市直有關部門。章丘市農村工作辦公室 二0一一年七月六日印 解:(共印50份)5、解:(1)插入完成后的二叉排序樹如下:ASL=(1+2*2+3*3+3*4+2*5+1*6/12=3.5(2
17、ASL=(1+282+3*4+4*5=37/12(312、解:哈希表構造如下: 012345 6 7891022413001534613 67H(22=(22*3%11=0H(41=(41*3%11=2H(53=(53*3%11=5H(46=(46*3%11=6H(30=(30*3%11=2 與(41沖突H1(30=(2+1%11=3H(13=(13*3%11=6 與46沖突H1(13=(6+1%11=7H(01=(01*3%11=3 與30沖突H1(01=(3+1%11=4H(67=(67*3%11=3 與30沖突H1(67=(3+1%11=4 與01沖突H2(67=(3+2%11=5 與5
18、3沖突H3(67=(3+3%11=6 與46沖突H4(67=(3+4%11=7 與13沖突H5(67=(3+5%11=8 ASLsucc=(1*4+2*3+6/8=2ASLunsucc=(2+8+7+6+5+4+3+2/8=37/8第九章 排序1、以關鍵字序列(503,087,512,061,908,170,897,275,653,426)為例,手工執行以下排序算法,寫出每一趟派結束時的關鍵字狀態。(1)直接插入排序(2)希爾排序(增量序列為5,3,1)(3)快速排序(4)堆排序(5)歸并排序解:(1)略(2)增量為5的排序結果:170,087,275,061,426,503,897,512,
19、653,908增量為3的排序結果:061,087,275,170,426,503,897,512,653,908增量為1的排序結果:061,087,170,275,426,503,512,653,897,908(3)一次劃分后:426 087 275 061 170503897 908 653 512分別進行:170 087 275 061426 503 512 653 897 908061 087170275426 503 512 653 897 908061 087 170 275 426 503 512 653 897 908 (4)略7、已知一組關鍵字:(40,27,28,12,15,
20、50,7),要求采用快速排序法從小到大排序。請寫出每趟排序后的劃分結果。解:初始狀態:40 27 28 12 15 50 7一次劃分:7 27 28 12 15 40 50依次劃分:7 27 28 12 15 40 507 15 12 27 28 40 507 12 15 27 28 40 5016、(1)A3 B1 C4 D2 E7(2C(3C17、對,錯,對數據結構課程設計指導書一、設計內容 1.飛機訂票系統(限1 人完成)【問題描述】設計一個飛機訂票系統,可以模擬處理飛機訂票過程中的各種操作。【基本要求】通過此系統可以實現如下功能:1錄入可以錄入航班情況(數據可以存儲在一個數據文件中,數
21、據結構、具體數據自定)。2查詢可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市,查詢飛機航班情況。3訂票(訂票情況可以存在一個數據文件中,結構自己設定)可以訂票,如果該航班已經無票,可以提供相關可選擇航班。4退票可退票,退票后修改相關數據文件。客戶資料有姓名,證件號,訂票數量及航班情況,訂單要有編號。5修改航班信息當航班信息改變可以修改航班數據文件根據以上功能說明,設計航班信息,訂票信息的存儲結構,設計程序完成功能。2.文章編輯(限1 人完成)【問題描述】輸入一頁文字,程序可以統計出文字、數字、空格的個數。【基本要
22、求】靜態存儲一頁文章,每行最多不超過80個字符,共N行;1分別統計出其中英文字母數和空格數及整篇文章總字數;2統計某一字符串在文章中出現的次數,并輸出該次數;3刪除某一子串,并將后面的字符前移;4用指定的字符串替換某一子串;5存儲結構使用線性表,分別用幾個子函數實現相應的功能;6輸入數據的形式和范圍:可以輸入大寫、小寫的英文字母、任何數字及標點符號。7輸出形式:分行輸出用戶輸入的各行字符;分4行輸出"全部字母數"、"數字個數"、"空格個數"、"文章總字數";輸出刪除某一字符串后的文章;輸出替換某一字符串后的文章。3
23、.宿舍管理查詢軟件(限1 人完成)【問題描述】為宿舍管理人員編寫一個宿舍管理查詢軟件。【基本要求】1 程序設計要求:采用交互工作方式建立數據文件,數據文件按關鍵字(姓名、學號、房號)進行排序(冒泡、選擇、插入排序等任選一種2 查詢菜單: (用二分查找實現以下操作按姓名查詢按學號查詢按房號查詢3 輸出任一查詢結果(可以連續操作)4.全國交通咨詢模擬【問題描述】處于不同目的的旅客對交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的時間盡可能的短,出門旅游的游客則期望旅費盡可能省,而老年旅客則要求中轉次數最少。編制一個全國城市間的交通咨詢程序,為旅客提供兩種或三種最優決策的交通咨詢。【設計要求
24、】1提供對城市信息進行編輯(如:添加或刪除)的功能。2提供對列車時刻表進行編輯(增設或刪除)的功能。3 提供兩種最優決策:最快到達和最省錢到達。4旅途中耗費的總時間應該包括中轉站的等候時間。5咨詢以用戶和計算機的對話方式進行。由用戶輸入起始站、終點站、最優決策原則,輸出信息:最快需要多長時間才能到達或者最少需要多少旅費才能到達,并詳細說明于何時乘坐哪一趟列車到何地。測試數據:參考教科書7.6節圖7.33的全國交通圖,自行設計列車時刻表。【實現提示】1 對全國城市交通圖和列車時刻表進行編輯,應該提供文件形式輸入和鍵盤輸入兩種方式。列車時刻表則需根據交通圖給出各個路段的詳細信息,例如:基于教科書7
25、.6節圖7.33的交通圖,對從北京到上海的火車,需給出北京至天津、天津至徐州及徐州至上海各段的出發時間、到達時間及票價等信息。2 以鄰接表作交通圖的存儲結構,表示邊的結構內除含有鄰接點的信息外,還應包括交通工具、路程中耗費的時間和花費以及出發和到達的時間等多種屬性。5.哈夫曼編碼/譯碼器(限1 人完成)【問題描述】設計一個利用哈夫曼算法的編碼和譯碼系統,重復地顯示并處理以下項目,直到選擇退出為止。【基本要求】1 將權值數據存放在數據文件(文件名為data.txt,位于執行程序的當前目錄中2 分別采用動態和靜態存儲結構3 初始化:鍵盤輸入字符集大小n、n個字符和n個權值,建立哈夫曼樹;4 編碼:
26、利用建好的哈夫曼樹生成哈夫曼編碼;5 輸出編碼;6 設字符集及頻度如下表:字符 空格 A B C D E F G H I J K L M頻度 186 64 13 22 32 103 21 15 47 57 1 5 32 20字符 N O P Q R S T U V W X Y Z頻度 57 63 15 1 48 51 80 23 8 18 1 16 1【進一步完成內容】1 譯碼功能;2 顯示哈夫曼樹;3 界面設計的優化。6.走迷宮游戲【問題描述】以一個m×n的長方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計一個程序,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的
27、結論。【基本要求】1首先用二維數組存儲迷宮數據,迷宮數據由用戶輸入。2一個以鏈表作存儲結構的棧類型,然后編寫一個求解迷宮的遞歸或非遞歸程序。求得的通路以三元組(i,j,d)形式輸出,其中:(i,j)指示迷宮中的一個坐標,d表示走到下一坐標的方向(東、南、西、北四個方向所用代表數字,自行定義)。3可以用多種方法實現,但至少用兩種方法,用三種以上可加分。【實現提示】1計算機解迷宮問題通常用的是“窮舉求解”方法,即從入口出發,順著某一個方向進行探索,若能走通,則繼續往前進;否則沿著原路退回,換一個方向繼續探索,直至出口位置,求得一條通路。假如所有可能的通路都探索到而未能到達出口,則所設定的迷宮沒有通
28、路。迷宮的入口點的下標為(1,1),出口點的下標為(m,n)。為處理方便起見,可在迷宮的四周加一圈障礙。對于迷宮的任一位置,均可約定有東、南、西、北四個方向可通。2有一種簡單走出迷宮的方法,把手放在右邊的墻上開始前進,始終不要把手從墻上移開。如果迷宮向右拐,你也順著墻向右拐。只要不把手從墻上移開,最終就會到達迷宮的出口。當然這樣得到的路徑可能不是一個最短的路徑,但它可以最終得到結果,換句話說,這種方法走不出迷宮的風險是最小的。7.作業評分系統【問題描述】設計一個可以給小學生出題并且可以給出分數的系統軟件。【基本要求】利用棧求表達式的值,可供小學生作業,并能給出分數。1 建立試題庫文件,隨機產生
29、n個題目;2 題目涉及加減乘除,帶括弧的混合運算;3 隨時可以退出;4 給出作業分數。【進一步完成內容】1)保留歷史分數,能回顧歷史,給出與歷史分數比較后的評價。2)界面設計的優化。8.散列表的設計與實現【問題描述】設計散列表實現電話號碼查找系統。【基本要求】1設每個記錄有下列數據項:電話號碼、用戶名、地址;2從鍵盤輸入各記錄,分別以電話號碼和用戶名為關鍵字建立散列表;3采用一定的方法解決沖突;4查找并顯示給定電話號碼的記錄;5查找并顯示給定用戶名的記錄。【進一步完成內容】1 系統功能的完善;2 設計不同的散列函數,比較沖突率;3 在散列函數確定的前提下,嘗試各種不同類型處理沖突的方法,考察平
30、均查找長度的變化。9.停車場管理【問題描述】設停車場是一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場內按車輛到達時間的先后順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場內已停滿n輛汽車,則后來的汽車只能在門外的便道上等待,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,在它之后進入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程序。【基本要求】以棧模擬停車場,以隊列模擬車場外
31、的便道,按照從終端讀入的輸入數據序列進行模擬管理。每一組輸入數據包括三個數據項:汽車“到達”或“離去”信息、汽車牌照號碼以及到達或離去的時刻。對每一組輸入數據進行操作后的輸出信息為:若是車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內停留的時間和應交納的費用(在便道上停留的時間不收費)。棧以順序結構實現,隊列以鏈表結構實現。【測試數據】設n=2,輸入數據為:(A,1,5,(A,2,10,(D,1,15,(A,3,20,(A,4,25,(A,5,30,(D,2,35,(D,4,40,(E,0,0。其中:A表示到達(Arrival);D表示(Departure);E表示輸入結束(End)。【實現提示】需另設一個棧,臨時停放為給要離去的汽車讓路而從停車場退出來的汽車,也用順序存儲結構實現。輸入數據按到達或離去的時刻有序。棧中每個元素表示一輛汽車,包含兩個數據項:汽車的牌照號碼和進入停車場的時刻。10.八皇后問題【問題描述】求出在一個n×n的棋盤上,放置n個不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中語文群文閱讀教學與學生批判性思維培養的關聯性分析論文
- 小學語文閱讀教學與寫作能力培養研究論文
- 芯片燒錄房管理制度
- 蘋果流程化管理制度
- 草根宣講員管理制度
- 《一年級下冊語文園地四》課件
- 萊鋼海綿鐵水再循環裝配計劃
- 超市連鎖-連鎖店的原理及其在零售業發展中的作用培訓教材 102
- 解析幾何基礎綜合-教師版教案
- 湖北省云學名校聯盟2024-2025學年高二下學期期中聯考生物試卷(有答案)
- 李辛演講-現代人的壓力與管理
- 自評報告中如何展示自己在疾病防控和公共衛生方面的能力
- 基于人工智能的CAD模型自動生成技術研究
- 無憂傳媒商業計劃書
- 【物流運輸合同】公司物流運輸合同
- 建設施工隱患判定和標準化檢查清單
- (完整)仰斜式擋土墻計算圖(斜基礎)
- 熱軋帶鋼板形控制
- 中國全部城市名及拼音
- 歷史九年級上冊第五單元《走向近代》作業設計 單元作業設計
- 外教社新編英語語法教程(第6版)PPT課件Unit-26
評論
0/150
提交評論