版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本人答案整理自沒(méi)有進(jìn)行校對(duì),僅為方便自己斷網(wǎng)或網(wǎng)絡(luò)不好時(shí)使用.如有紕漏,望請(qǐng)見(jiàn)諒.因見(jiàn)多有人尋此資源不果,遂分享之,以報(bào)多年來(lái)眾驢友分享于我之萬(wàn)一.本答案為 英文版 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)(C語(yǔ)言版) 即 FUNDAMENTALS OF DATA STRUCTURES IN C 部分習(xí)題答案.答案所有文字描述均為英文.且僅有大部分習(xí)題答案.少數(shù)習(xí)題答案網(wǎng)站沒(méi)有給出,因而我也沒(méi)有辦法.本人排版水平不佳,全部復(fù)制粘貼網(wǎng)站內(nèi)容,幾乎未經(jīng)過(guò)任何排版,大家就將就看下吧.目錄CHAPTER 12CHAPTER 224CHAPTER 344CHAPTER 463CHAPTER 579CHAPTER 696CHAPTE
2、R 7125CHAPTER 8139CHAPTER 9140CHAPTER 10142CHAPTER 11147CHAPTER 12170CHAPTER 1Chapter 1, Pages 16-17Problem 1.a This statement is a poorly phrased version of Fermats last theorem. We know that we can find n 2 for which the equation holds. Fermat scribbled a note on a text margin indicating that he h
3、ad found the solution for n = 2. Unfortunately, the proof died with him. Because the statement is phrased as a question rather than a clearly defined algorithm, it lacks definiteness.Problem 1.b This statement violates not only the rules of mathematics, but the criterion of effectiveness. We can com
4、pute only those things that are feasible, and division by zero is mathematically undefinedPage 17, Exercise 3#include #include #include #define TRUE 1#define FALSE 0#define MAX_STRING 100void truth_table(int);int main() int n; printf(n:(=0): ); scanf(%d, &n); while (n =0): ); scanf(%d, &n); truth_ta
5、ble(n);void truth_table(int n)/* generate a truth_table by transforming # of permutations into binary */int i,j, div, rem;char stringMAX_STRING;for (i=0; i 0; j-) /*number of bits needed for each row*/ rem = div%2; div = div/2; if (!rem) strcat(string,FALSE ); else strcat(string, TRUE ); printf(%sn,
6、 string); Page 17, Exercise 4#include int min(int, int);#define TRUE 1#define FALSE 0int main() int x,y,z; printf(x: ); scanf(%d, &x); printf(y: ); scanf (%d, &y); printf(z: ); scanf(%d, &z); if (min(x,y) & min(y,z) /*x is smallest */ printf(%d , x); if (min(y,z) printf (%d %dn, y,z); else printf(%d
7、%dn, z, y); else if (min(y,x) & min(y,z) /*y is the smallest */ printf(%d , y); if (min(x,z) printf (%d %dn, x,z); else printf(%d%dn, z,x); else printf(%d %d %dn, z, y, x);int min(int a, int b) if (a b) return TRUE; return FALSE; Page 17, Exercise 7#include double iterFact(int);double recurFact(int)
8、;int main() int n; printf(n:(=0): ); scanf(%d, &n); while (n =0): ); scanf(%d, &n); printf(%d factorial is %f.n, n, iterFact(n); printf(%d factorial is %f.n, n, recurFact(n);double recurFact(int n) /*recursive version */ if (n=0) | (n=1) return 1.0; return n*recurFact(n-1);double iterFact(int n)/* f
9、ind the factorial, return as a double to keep it from overflowing */ int i; double answer; if (n = 0) | (n = 1) return 1.0; answer = 1.0; for (i = n; i 1; i-) answer *= i; return answer; Page 17, Exercise 8#include int iterFib(int);int recurFib(int);int main() int n; printf(n:(=0): ); scanf(%d, &n);
10、 while (n =0): ); scanf(%d, &n); printf(%d Fibonacci is %d.n, n, iterFib(n); printf(%d Fibonacci is %d.n, n, recurFib(n);int recurFib(int n) /*recursive version */ if (n=0) | (n=1) return 1; return recurFib(n-1) + recurFib(n-2);int iterFib(int n)/* find the factorial, return as a double to keep it f
11、rom overflowing */ int i; int fib, fib1, fib2; if (n = 0) | (n = 1) return 1; fib1 = fib2 = 1; for (i = 2; i =n; i+) fib = fib1+fib2; fib2 = fib1; fib1 = fib; return fib; Page 17, Exercise 9#include double recurBinom(int, int);double iterBinom(int, int);double recurFact(int n);int main() int n,m; pr
12、intf(n:(=0): ); scanf(%d, &n); while (n =0): ); scanf(%d, &n); printf(m:(=0): ); scanf(%d, &m); while (m =0): ); scanf(%d, &m); printf(n: %d m: %d Recursive Binomial coefficient is %f.n, n, m, recurBinom(n,m); printf(n: %d m: %d Iterative Binomial coefficient is %f.n, n, m, iterBinom(n,m);double ite
13、rBinom(int n, int m)/* defined as n!/(m! - (n-m)!)*/ int i; double nFact, mFact, nMinusMFact; if (n = m) return 1; if (n=0) | (n = 1) nFact = 1; else nFact = 1; for (i = n; i 1; i-) nFact *= i; if (m=0) | (m = 1) mFact = 1; else mFact = 1; for (i = m; i 1; i-) mFact *= i; if ( (n-m) = 0) | (n-m) = 1
14、) nMinusMFact = 1; else nMinusMFact = 1;for (i = n-m; i 1; i-)nMinusMFact *= i; return nFact/(mFact*nMinusMFact);double recurFact(int n) /*recursive version */ if (n=0) | (n=1) return 1.0; return n*recurFact(n-1);double recurBinom(int n, int m) /*recursive version */ return recurFact(n)/(recurFact(m
15、)*recurFact(n-m); Page 17, Exercise 11#include #define Tower1 1#define Tower2 2#define Tower3 3void towers_of_hanoi(int, int, int, int);int main()int n_disks;printf(Number of disks: ); scanf(%d, &n_disks);printf(Disk, source, and destination towers listed belown); printf(%12s%10s%15sn, Disk No, Sour
16、ce,Destination); towers_of_hanoi(n_disks,Tower1,Tower3,Tower2);void towers_of_hanoi(int n_disks, int source, int dest, int spare) if (n_disks = 1 ) printf(%10d%10d%10dn, n_disks, source, dest); else /*move a disk from source to spare*/ towers_of_hanoi(n_disks-1,source,spare,dest); printf(%10d%10d%10
17、dn, n_disks, source, dest); /*move a disk from spare to destination tower*/ towers_of_hanoi(n_disks-1,spare,dest,source); Page 21, Exercise 1ADT NaturalNumber is objects: an ordered subrange of the integers starting at zero and ending at themaximum integer (INT_MAX) on the computer functions: forall
18、 x, y NaturalNumber; TRUE, FALSE Boolean and where +, , , and = are the usual integer operations NaturalNumber Zero( ) := 0 Boolean IsZero(x) := if (x) return FALSE return TRUE Boolean Equal(x, y) := if (x = y) return TRUE return FALSE NaturalNumber Successor(x) := if (x = INT_MAX) return x return x
19、 + 1 NaturalNumber Add(x, y) := if (x + y) INT_MAX) return x + y if (x + y) = INT_MAX) return x + y return INT_MAX NaturalNumber Subtract(x, y) := if (x y) return 0 return x y NaturalNumber Predecessor(x) := if (x 0) return ERROR if (x = 0) return 0 return x - 1 Boolean IsGreater(x, y) := if (x-y) 0
20、) return ERROR if (x-y) = 0) return FALSE return TRUE NaturalNumber mult(x, y) := if (x 0) return ERROR if (y 0) return ERROR if (y = 1) return x return x + mult(x, y-1) NaturalNumber div(x, y) := if (x 0) return ERROR if (y 0) return ERROR if (y = 0) return ERROR if (y = 1) return 1 return x - div(
21、x, y-1) end NaturalNumber Page 21, Exercise 3ADT Set is objects: a subrange of the integers starting at (INT_MIN) and ending at themaximum integer (INT_MAX) on the computer functions: forall x, y Set; TRUE, FALSE Boolean and the Boolean operations defined in Problem 4 are available (not, and, or,.)a
22、nd where =, , +, head(s), tail(s) are the usual set operations, where = return TRUE if tw set elements are the same, and TRUE otherwise. is the empty set.+ adds and element to a set.head(s) extracts the first member in the set. tail(s) extracts a list of all other elements in the set. An empty set c
23、ontains no tail. A set with only one element has the emtpy set has it tail.Set Create(s) := Boolean IsEmpty(s) := if (s = ) return TRUE return FALSE Boolean IsIn(x, s) := if (IsEmpty(s) return FALSE if (x = head(s) return TRUE return IsIn(x, Tail(s) Set Insert(x,s) := if (IsEmpty(s) return x + s if
24、(IsIn(a,s) return s return x + s Set Remove(x, s) := if (x = head(s) return tail(s) return Remove(x, tail(s) Set Union(x, s1, s2) := if IsEmpty(s1) return s2 if IsIn(head(s1), s2) return Union(x, tail(s1), s2) return head(s1) + Union(x, tail(s1), s2) set Intersection(x, s1,s2) := if IsEmpty(s1) retu
25、rn if IsIn(head(s1), s2) return head(s1) + Intersection(x, tail(s1), s2) return Intersection(x, tail(s1), s2) Boolean Difference(s1,s2) := if IsEmpty(s1) return if IsIn(head(s1), s2) return Difference(x, tail(s1), s2) return head(s1) + Difference(x, tail(s1), s2) end SetPage 21, Exercise 3ADT Bag is
26、 objects: a subrange of the integers starting at (INT_MIN) and ending at themaximum integer (INT_MAX) on the computer functions: forall x, y Bag; TRUE, FALSE Boolean and the Boolean operations defined in Problem 4 are available (not, and, or,.)and where =, , +, head(s), tail(s) are the usual Bag ope
27、rations, where = return TRUE if tw set elements are the same, and TRUE otherwise. is the empty Bag.+ adds and element to a Bag.head(s) extracts the first member in the Bag. tail(s) extracts a list of all other elements in the Bag. An empty bag contains no tail. A bag with only one element has the em
28、tpy bag has it tail.Bag Create(b) := Boolean IsEmpty(b) := if (b = ) return TRUE return FALSE Boolean IsIn(x, b) := if (IsEmpty(b) return FALSE if (x = head(b) return TRUE return IsIn(x, Tail(b) Bag Insert(x,s) := if (IsEmpty(b) return b return x + b Bag Remove(x, s) := if (IsEmpty(b) return b if (x
29、 = head(b) return tail(b) return Remove(x, tail(b) end bag Page 21, Exercise 4ADT Boolean is objects: TRUE, FALSE Boolean and the Boolean= the usual boolean operation. where = return TRUE if tw set elements are the same, and TRUE otherwise. Boolean not(x) := if (x) return TRUEreturn FALSEBoolean and
30、(x,y) := if(not(x) return FALSEif (not(y) return FALSEreturn TRUEBoolean or(x, s):= if(x) return TRUEif (y) return TRUEreturn FALSEBoolean xor(x, s):= if(and(not(x), not(y) return FALSEif (and(x, y) return FALSEreturn TRUEBoolean implies(x, s):= if (and(x, y) return TRUEif (and(not(x),not(y) return
31、TRUEreturn FALSEBoolean equivalent(x, s):= if(and(not(x), not(y) return TRUEif (and(x, y) return TRUEreturn FALSEend SetPage 25, Exercise 1Iterative Factorial Function, SiterFact(I) = 0Recursive Function: recurFact() TypeNameNumber of BytesParameter(int)n4Local Variables(int)(double)ianswer46Return
32、Type (double)6TOTAL20 for each recursive callif (n = MAX_SIZE) SrecurFact(I) = (20MAX_SIZE)Page 21, Exercise 3ADT Set is objects: a subrange of the integers starting at (INT_MIN) and ending at themaximum integer (INT_MAX) on the computer functions: forall x, y Set; TRUE, FALSE Boolean and the Boolea
33、n operations defined in Problem 4 are available (not, and, or,.)and where =, , +, head(s), tail(s) are the usual set operations, where = return TRUE if tw set elements are the same, and TRUE otherwise. is the empty set.+ adds and element to a set.head(s) extracts the first member in the set. tail(s)
34、 extracts a list of all other elements in the set. An empty set contains no tail. A set with only one element has the emtpy set has it tail.Set Create(s):= Boolean IsEmpty(s) := if (s = ) return TRUE return FALSEBoolean IsIn(x, s):= if (IsEmpty(s) return FALSE if (x = head(s) return TRUE return IsIn
35、(x, Tail(s)Set Insert(x,s):= if (IsEmpty(s) return x + s if (IsIn(a,s) return s return x + sSet Remove(x, s):= if (x = head(s) return tail(s) return Remove(x, tail(s)Set Union(x, s1, s2):= if IsEmpty(s1) return s2 if IsIn(head(s1), s2) return Union(x, tail(s1), s2) return head(s1) + Union(x, tail(s1
36、), s2)set Intersection(x, s1,s2):= if IsEmpty(s1) return if IsIn(head(s1), s2) return head(s1) + Intersection(x, tail(s1), s2) return Intersection(x, tail(s1), s2)Boolean Difference(s1,s2):= if IsEmpty(s1) return if IsIn(head(s1), s2) return Difference(x, tail(s1), s2) return head(s1) + Difference(x
37、, tail(s1), s2)end SetPage 21, Exercise 3ADT Bag is objects: a subrange of the integers starting at (INT_MIN) and ending at themaximum integer (INT_MAX) on the computer functions: forall x, y Bag; TRUE, FALSE Boolean and the Boolean operations defined in Problem 4 are available (not, and, or,.)and w
38、here =, , +, head(s), tail(s) are the usual Bag operations, where = return TRUE if tw set elements are the same, and TRUE otherwise. is the empty Bag.+ adds and element to a Bag.head(s) extracts the first member in the Bag. tail(s) extracts a list of all other elements in the Bag. An empty bag conta
39、ins no tail. A bag with only one element has the emtpy bag has it tail.Bag Create(b):= Boolean IsEmpty(b) := if (b = ) return TRUE return FALSEBoolean IsIn(x, b):= if (IsEmpty(b) return FALSE if (x = head(b) return TRUE return IsIn(x, Tail(b)Bag Insert(x,s):= if (IsEmpty(b) return b return x + bBag
40、Remove(x, s):= if (IsEmpty(b) return b if (x = head(b) return tail(b) return Remove(x, tail(b)end bagPage 32, Exercise 4: PrintMatrixa. Counts void Printmatrix(int matrixMAX_SIZE, int rows, int cols) int i,j; int count = 0; for (i = 0; irows; i+) count +; /*for i loop */ for (j = 0; jcols; j+) print
41、f(%5d,matrixij); count+; /*for j loop */count+; /* last time of j */ printf(n); count+; /* last time of i */ printf(Print Count: %dn, count); b. Simplified Counts void Printmatrix(int matrixMAX_SIZE, int rows, int cols) int i,j; int count = 0; for (i = 0; irows; i+) count +; /*for i loop */ for (j =
42、 0; jcols; j+) printf(%5d,matrixij); count+; /*for j loop */count+; /* last time of j */ printf(n); count+; /* last time of i */ printf(Print Count: %dn, count); c. Final Count for 5x5 matrix : 36d. Step Count Table Step Count Table Statements/efTotal Stepsvoid Printmatrix(int matrixMAX_SIZE, int ro
43、ws, int cols) int i,j; for (i = 0; irows; i+) for (j = 0; jcols; j+) printf(%5d,matrixij); printf(n); 0001010000001n+10n+1000000n+10n+1000Total2n+2Page 32, Exercise 5 Multiplicationa. Counts void mult(int aMAX_SIZE, int bMAX_SIZE, int cMAX_SIZE) int i, j,k; int count = 0; for (i = 0; i MAX_SIZE; i+)
44、 count +; /*for i loop */ for (j = 0; j MAX_SIZE; j+) cij = 0; count+; /* for assignment */ count+; /*for j loop */ count+; /* last time of j */ for (k=0; k MAX_SIZE; k+) cij += (aik * bkj); count+; /* for assignment */ count+; /* for k loop*/ count+; /*last time of k */ count+; /* last time of i */
45、 printf(Multiplication Count: %dn, count);b. Simplified Counts void mult(int aMAX_SIZE, int bMAX_SIZE, int cMAX_SIZE) int i, j,k; int count = 0; for (i = 0; i MAX_SIZE; i+) for (j = 0; j MAX_SIZE; j+) cij = 0; count+=2; for (k=0; k MAX_SIZE; k+) cij += (aik * bkj); count+=2; count+=3; count+; /* las
46、t time of i */ printf(Multiplication Count: %dn, count);c. Final Count for 5x5 matrix: 119d. Step Count Table Step Count Table Statements/ef (MAX_S) = MAX_SIZETotal Stepsvoid mult(int aMAX_SIZE, int bMAX_SIZE, int cMAX_SIZE) int i, j,k; for (i = 0; i MAX_SIZE; i+) for (j = 0; j MAX_SIZE; j+) cij = 0
47、; for (k=0; k MAX_SIZE; k+) cij += (aik * bkj); 0000110111001111MAX_S+1MAX_SMAX_S + MAX_SMAX_SMAX_SMAX_SMAX_SMAX_SMAX_SMAX_S + MAX_SMAX_SMAX_sMAX_SMAX_SMAX_SMAX_SMAX_SMAX_S0000MAX_S+1MAX_SMAX_S + MAX_S0MAX_SMAX_SMAX_SMAX_SMAX_S + MAX_SMAX_SMAX_SMAX_SMAX_SMAX_S00Total : 3MAX_SIZE3 + 2MAX_SIZE2 + 2MAX_SIZE + 1 = O(MAX_SIZE)3Page 32, Exercise 4: Producta. Counts void prod(int aMAX_SIZE, int bMAX_SIZE, int cMAX_SIZE,int rowsA, int colsB, int colsA) int i, j,k; int count = 0; for (i = 0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠房分租合租合同模板
- 2024-2030年中國(guó)等靜壓機(jī)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 2024-2030年中國(guó)竹業(yè)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2024-2030年中國(guó)空調(diào)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2024-2030年中國(guó)稀土微肥行業(yè)銷(xiāo)售動(dòng)態(tài)及供需趨勢(shì)預(yù)測(cè)報(bào)告
- 2024-2030年中國(guó)移動(dòng)亭軟件行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2024-2030年中國(guó)票據(jù)印刷行業(yè)發(fā)展動(dòng)態(tài)與前景趨勢(shì)預(yù)測(cè)報(bào)告
- 2024-2030年中國(guó)磨砂玻璃行業(yè)市場(chǎng)發(fā)展分析及競(jìng)爭(zhēng)形勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2024-2030年中國(guó)堿式硝酸銅行業(yè)前景盈利預(yù)測(cè)及經(jīng)營(yíng)效益展望報(bào)告
- 年度新聞采輯競(jìng)爭(zhēng)策略分析報(bào)告
- 四年級(jí)數(shù)學(xué)(三位數(shù)乘兩位數(shù))計(jì)算題專(zhuān)項(xiàng)練習(xí)及答案
- 2024年中國(guó)手提干粉滅火器市場(chǎng)調(diào)查研究報(bào)告
- 河南省鄭州市管城區(qū)2024-2025學(xué)年七年級(jí)入學(xué)學(xué)情調(diào)研 數(shù)學(xué)試題(含詳解)
- 三對(duì)三籃球賽記錄表
- 部編版語(yǔ)文三年級(jí)上冊(cè)第四單元【集體備課】
- 全過(guò)程工程咨詢(xún)管理服務(wù)方案
- 2023屆高考語(yǔ)文古代詩(shī)歌閱讀考點(diǎn)突破:古詩(shī)的結(jié)構(gòu)
- GB∕T 39116-2020 智能制造能力成熟度模型
- [語(yǔ)言類(lèi)考試復(fù)習(xí)資料大全]申論模擬1164
- 26個(gè)英文字母專(zhuān)項(xiàng)練習(xí)題[共2頁(yè)]
- 10kV線(xiàn)路倒閘操作.ppt
評(píng)論
0/150
提交評(píng)論