freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第5章數(shù)組和廣義表習(xí)題解答-wenkub.com

2025-03-22 06:48 本頁面
   

【正文】 習(xí)題參考答案一、問答題1.常對(duì)數(shù)組進(jìn)行的兩種基本操作是什么?2.二維數(shù)組M56的元素是4個(gè)字符(每個(gè)字符占用一個(gè)存儲(chǔ)單元)組成的串,那么按行優(yōu)先存儲(chǔ)時(shí)元素M[3][5]的起始地址與M按列優(yōu)先存儲(chǔ)時(shí)的什么元素的起始地址相同?3.稀疏矩陣的壓縮存儲(chǔ)方法有哪兩種?4.如果采用三元組壓縮存儲(chǔ)技術(shù)來存儲(chǔ)稀疏矩陣,只要把每個(gè)元素的行下標(biāo)和列下標(biāo)互換,就完成了對(duì)該矩陣的轉(zhuǎn)置操作,這種說法是否正確?5.設(shè)整型三角矩陣A44采用壓縮存儲(chǔ),已知LOC(A[0][0])=100,那么A[3][2]的首地址是多少(每個(gè)整數(shù)占用4個(gè)字節(jié))?6.已知稀疏矩陣,畫出A的十字鏈表存儲(chǔ)結(jié)構(gòu)示意圖。(3)對(duì)已建立存儲(chǔ)結(jié)構(gòu)的廣義表實(shí)施操作,并以符號(hào)形式顯示結(jié)果。(3)在用三元組順序存儲(chǔ)表示稀疏矩陣時(shí),相加、相減的結(jié)果矩陣應(yīng)另行生成,乘積運(yùn)算的結(jié)果矩陣可用二維數(shù)組存儲(chǔ)?!緶y試數(shù)據(jù)】【實(shí)現(xiàn)提示】(1)首先輸入矩陣的行數(shù)和列數(shù),并判斷基本操作中兩個(gè)矩陣的行數(shù)和列數(shù)對(duì)于所要求的運(yùn)算是否相匹配。利用“稀疏”特點(diǎn)進(jìn)行存儲(chǔ)和計(jì)算可以大大節(jié)省存儲(chǔ)空間,提高計(jì)算效率。稀疏矩陣的十字鏈表存儲(chǔ)結(jié)構(gòu)也是圖的一種存儲(chǔ)結(jié)構(gòu)。例如廣義表 ((a,b),(c))與 (a,(e,f))合并后的結(jié)果是((a,b),(c),a,(e,f))。6.編寫一個(gè)算法,將一個(gè)廣義表中的元素x替換成y。并且要求C也是用三元組順序表示的稀疏矩陣。三、編程設(shè)計(jì)1.編寫一個(gè)函數(shù),將整型數(shù)組A[0,…,n1]中的所有奇數(shù)移到偶數(shù)之前,并且要求只用一個(gè)元素大小的附加存儲(chǔ)空間,且時(shí)間復(fù)雜度為O(n)。(7)Tail【Head【((a,b),(c,d))】】=( )。(3)Head【((a),(b))】=( )。5.廣義表((a),((b),c),(((d))))的表頭是【 】,表尾是【 】,長度是( ),深度是( )。7.已知廣義表LS=(a,(b,c,d),e),那么取出原子b的運(yùn)算是什么?8.一個(gè)廣義表的表頭還是一個(gè)廣義表,這種說法對(duì)嗎?9.一個(gè)廣義表的表尾也一定是一個(gè)廣義表,這種說法對(duì)嗎?二、填空題1.已知矩陣Amn采用以行為主序的方法存儲(chǔ),每個(gè)元素占用k個(gè)字節(jié)的存儲(chǔ)單元,并且A[0][0]的起始地址為m,那么元素A[i][j]的起始地址是( )。 Head(GL)。 CopyGList(GT,GL)。 coutGListDepth(GL)endl。 cout(1)遍歷結(jié)果為: 。 AtomType *str=new AtomType[200]。 Traverse_GL(h)。 coutendl。 coutendl。 else { cout表頭為: 。 cout廣義表: 。,39。 p=GL。 if(!GL) cout()。delete[]hstr。 ptag=LIST。 do{ Sever(sub,hstr)。sub[j]=str[i]。!str[1]) { Ltag=ATOM。!str[2]) L=NULL。str[1]==39。 if(str[0]==39。 GList p。4)逐個(gè)創(chuàng)建p的每一個(gè)子廣義鏈表。返回,否則執(zhí)行3)。\039。 if(ch==39。)39。 if(ch==39。||k!=0)。(ch=str[i])amp。str,AtomType* amp。,39。之前的子字符串賦給hstr,并且使str成為刪去子串hstr和39。 L,AtomType* str)(1) 函數(shù)void Sever(AtomType* amp。 if(Ltag==ATOM) T=L。其程序?qū)崿F(xiàn)代碼如下:void CopyGList(GList amp。 else h=GListLength(GL)+1。 } return(max+1)。 //原子的深度為0 for(max=0,pp=GL。算法的程序?qū)崿F(xiàn)如下:int GListDepth(GList GL){ int max,dep。}*GList。 union //定義結(jié)點(diǎn)信息域Data的類型為共同體類型(union) { AtomType data。typedef char AtomType。(5)E=(a,E)。例如,對(duì)于[]中的廣義表:(1)A=()?!尽壳笙铝袑?duì)廣義表進(jìn)行基本操作的結(jié)果:(1)Head【((a,b),(c,d))】;(2)Head【Tail【((a,b),(c,d))】】;(3)Tail【Head【((a,b),(c,d))】】;(4)Tail【Head【Tail【((a,b),(c,d))】】】;(5)Head【Tail【Head【((a,b),(c,d))】】】。T,L) 該操作的結(jié)果是由廣義表L復(fù)制得到廣義表T;(4)求長度GetLength(L) 該操作的功能是返回廣義表L的長度;(5)求深度GetDepth(L) 該操作的功能是返回廣義表L的深度;(6)求表頭Head(L) 該操作的功能是返回廣義表L的表頭;(7)求表尾Tail(L) 該操作的功能是返回廣義表L的表尾;(8)插入操作InsertFirst_GL(amp。前者為空表而后者非空,其長度為1深度為2。(3)廣義表可以是一個(gè)遞歸定義的廣義表,如[]中的廣義表E。1.廣義表的幾個(gè)重要特點(diǎn)(1)廣義表中的元素還可以是廣義表,可見它是一個(gè)多層次結(jié)構(gòu)。(2)B=(e)B是一個(gè)廣義表,只有一個(gè)原子e,長度為1,深度為1,表頭為原子e,表尾為空表()。顯然,廣義表是一種遞歸定義的數(shù)據(jù)結(jié)構(gòu),雖然它也是線性結(jié)構(gòu)但是它與線性表有著明顯的差別。 }}運(yùn)行結(jié)果為:Create Cross Matrix:輸入行數(shù)和列數(shù)m n:4 6↙input i j e(e=0退出):0 2 9↙1 1 5↙1 5 1↙2 0 4↙2 5 2↙3 3 8↙0 0 0↙your input is:(0 2 9)(1 1 5)(1 5 1)(2 0 4)(2 5 2)(3 3 8)繼續(xù)嗎(y=1/no=2)?1Create Cross Matrix:輸入行數(shù)和列數(shù)m n:4 6↙input i j e(e=0退出):3 3 8↙2 0 4↙1 1 5↙0 2 9↙1 5 1↙2 5 2↙0 0 0↙your input is:(0 2 9)(1 1 5)(1 5 1)(2 0 4)(2 5 2)(3 3 8)繼續(xù)嗎(y=1/no=2)? 廣義表廣義表是n(n≥0)個(gè)數(shù)據(jù)元素a1,a2,a3,…,an的有限序列,記為:LS=。 coutyour input is:\n。pe)\n。pi39。i++) for(p=[i]。void Print_OL(CrossList M){ int i。 coutinput i j e(e=0退出):\n。 Etype e。}4.十字鏈的建立操作函數(shù)void Create_OL(CrossListamp。q=qdown)。} else { for(q=[j]。 pright=qright。qrightamp。 pe=e,pi=i,pj=j。 M,int i,int j,Etype e){ Olink p,q。}3.在十字鏈中插入一個(gè)結(jié)點(diǎn)操作函數(shù)int Insert_OL(CrossListamp。i++)[i]=NULL。 =new Olink[m]。 M,int m,int n){ int i。}。 OLNode* right,*down。由于該結(jié)點(diǎn)既是i行鏈表中的結(jié)點(diǎn)又是j列鏈表中的結(jié)點(diǎn),所以矩陣的所有非零元素構(gòu)成一個(gè)十字交叉的鏈表,稱之為十字鏈表。 }}運(yùn)行結(jié)果為:輸入兩個(gè)行、列相同的矩陣:1求轉(zhuǎn)置與快速轉(zhuǎn)置,2矩陣的和與差,3矩陣的積.輸入三元組矩陣A:請輸入行數(shù)和列數(shù):5 5↙輸入 i j e:0 2 9↙1 0 7↙1 2 7↙3 1 8↙4 2 9↙0 0 0↙輸入三元組矩陣B:請輸入行數(shù)和列數(shù):5 5↙輸入 i j e:0 1 7↙1 3 8↙2 0 9↙2 1 7↙2 4 9↙4 0 5↙0 0 0↙A的轉(zhuǎn)置矩陣為:0 7 0 0 00 0 0 8 09 7 0 0 90 0 0 0 00 0 0 0 0A的快速轉(zhuǎn)置矩陣為:0 7 0 0 00 0 0 8 09 7 0 0 90 0 0 0 00 0 0 0 0A+B的和為:0 7 9 0 07 0 7 8 09 7 0 0 90 8 0 0 05 0 9 0 0AB的差為:0 7 9 0 07 0 7 8 09 7 0 0 90 8 0 0 05 0 9 0 0A*B的積為:81 63 0 0 8163 98 0 0 630 0 0 0 00 0 0 64 081 63 0 0 81矩陣A為:0 0 9 0 07 0 7 0 00 0 0 0 00 8 0 0 00 0 9 0 0矩陣B為:0 7 0 0 00 0 0 8 09 7 0 0 90 0 0 0 05 0 0 0 0當(dāng)稀疏矩陣中非零元素的個(gè)數(shù)和位置在操作過程中變化比較大時(shí),就不易采用順序存儲(chǔ)結(jié)構(gòu)來表示三元組。 cout矩陣A為:\n。 Print1_TSM(F)。 Sub_TSM(A,B,F)。 Print1_TSM(C)。 continue。 Create_TSM(A)。void main(){ TSMatrix A,B,C,D,E,F,G。 } } delete[]Anum。 } if(s) { k=++。k。i++) for(j=0。 =。 int *Bnum=new int[]。void Mult_TSM(TSMatrix A,TSMatrix B,TSMatrixamp。 } else if([k].jj) break。amp。int Ffand(Etype amp。raw++) rpot[raw]=rpot[raw1]+num[raw1]。t++)++num[[t].i]。raw。}8.三元組矩陣的乘法(1)函數(shù)void Frpot(int rpot[],TSMatrix M)完成的操作是,求稀疏矩陣M中每行起始位置的向量rpot。 for(p=1。7.三元組矩陣的減運(yùn)算操作函數(shù)void Sub_TSM(TSMatrix M,TSMatrix N,TSMatrixamp。}while(p=)[r++]=[p++]。 } p++。q=) { if([p].i==[q].i) { if([p].j[q].j) [r++]=[p++]。 A){ Etype e。}算法分析在快速轉(zhuǎn)置操作函數(shù)FTrans_TSM()的算法中,比算法Trans_TSM()多使用了兩個(gè)輔助數(shù)組(num和cpot)的存儲(chǔ)空間,但是該算法的時(shí)間復(fù)雜度僅為O(nu+tu),顯然比前者快了很多。 [q].j=[p].i。p=。 //第0行的起始位置為1 for(col=1。 for(t=1。 if(!)return。T){ =,=,=。例如。 }}算法分析在轉(zhuǎn)置操作函數(shù)Trans_TSM()的算法中,其時(shí)間復(fù)雜度為O(nutu),當(dāng)矩陣中非零元素的個(gè)數(shù)tu與元素總數(shù)munu同數(shù)量級(jí)時(shí),其時(shí)間復(fù)雜度就成了O(munu2)。p++) if([p].j==j) { [n].e=[p].e。 for(j=0。 =。T)計(jì)算稀疏矩陣S的轉(zhuǎn)置矩陣T。(2,0,9),(1,2,7)224。下面以此為例來說明有關(guān)稀疏矩陣轉(zhuǎn)置操作的算法。對(duì)于用三元組順序存儲(chǔ)表示的稀疏矩陣,其轉(zhuǎn)置操作似乎只在三元組表中將i,j兩列數(shù)對(duì)調(diào)一下就可以了,但實(shí)際上并非那么簡單。 39。im。p++) //通過T計(jì)算A的值 { i=[p].i。jn。 Etype *A=new Etype[m*n]。 cout[i].j,。 cout行=,列=endl。[k].e)。 }while([k].iamp。 =0。void Create_TSM(TSMatrix amp。、。struct TSMatrix{ Triple data[MAXSIZE+1]。1.稀疏矩陣的順序存儲(chǔ)結(jié)構(gòu)在C++語言程序設(shè)計(jì)環(huán)境中,可定義稀疏矩陣的順序存儲(chǔ)結(jié)構(gòu)為includedefine MAXSIZE 2000 //定義非零元素的最大總數(shù)即三元組的最大容量typedef int Etype。C) 其功能是求稀疏矩陣A、B的和C;(4)減法SubMatrix(A,B,amp。,可按行優(yōu)先的順序用三元組順序表示成向量:((0,2,9)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1