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

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)上機實訓(xùn)指導(dǎo)結(jié)構(gòu)設(shè)計-資料下載頁

2025-06-27 09:33本頁面
  

【正文】 [pc].data=[pa].data。pa++。pc++。}while(pbamp。amp。[pb].row==x){Cval[pc].row=x。Cval[pc].col=[pb].col。Cval[pc].data=[pb].data。pb++。pc++。}}Ctu=pc。}main(){int i。TSMatrix A,B,C。=4。=4。=4。=4。=4。=3。printf(input A val:\n)。for(i=0。i。i++)scanf(%d%d%d,amp。[i].row, amp。[i].col, amp。[i].data)。printf(input B val:\n)。for(i=0。i。i++)scanf(%d%d%d,amp。[i].row, amp。[i].col, amp。[i].data)。TSMatrix_Add(A,B,amp。C)。printf(output C val:\n)。for(i=0。i。i++)printf(%d %d %d\n,[i].row,[i].col,[i].data)。}【測試數(shù)據(jù)與結(jié)果】input A val:0 2 10 3 21 0 12 1 4input B val:0 0 10 2 11 0 2output C val:0 0 10 2 20 3 21 0 32 1 4【實例2】稀疏矩陣的轉(zhuǎn)置 【實例分析】稀疏矩陣的轉(zhuǎn)置運算就是對一個mn的矩陣A,它的轉(zhuǎn)置矩陣B是一個nm的矩陣,且A[i][j]=B[j][i],0≤im,0≤jn,即A的行是B的列,A的列是B的行。例:圖1-3 矩陣及其轉(zhuǎn)置矩陣圖13所示的矩陣B是矩陣A的轉(zhuǎn)置矩陣。其三元組表示如下:A的三元組表示:rol coldata1131412231931733113524534B的三元組表示:rol coldata1131373219341135441125324因此,程序的設(shè)計,要求輸入矩陣A的三元組表示,輸出其轉(zhuǎn)置矩陣的三元組值?!緟⒖汲绦颉縟efine MAX 30typedef struct{int row,col。 /*該非零元素的行、列下標(biāo)*/ int data。 /*該非零元素的值*/ }TripleTp。typedef struct{TripleTp val[MAX+1]。int mu,nu,tu。}TSMatrix。main(){int i,q,p。TSMatrix A,B。printf(input col row and number:)。scanf(%d%d%d,amp。, amp。, amp。)。/*輸入稀疏矩陣的行數(shù)、列數(shù)和非零元素的個數(shù)*/=。=。=。printf(input A val:\n)。for(i=0。i。i++)scanf(%d%d%d,amp。[i].row, amp。[i].col, amp。[i].data)。if (!=0){q=0。for(i=1。i=。i++)for (p=0。p。p++)if ([p].col==i){[q].row=[p].col。[q].col=[p].row。[q].data=[p].data。q++。}}for(i=0。i。i++)printf(output B:)。printf(%d %d %d\n,[i].row,[i].col,[i].data)。}【測試數(shù)據(jù)與結(jié)果】input col row and number: 5 6 7input A val:1 1 31 4 122 3 193 1 73 3 113 5 245 3 4output B:1 1 31 3 73 2 193 4 113 5 44 1 125 3 24四、 思考項目 求兩個稀疏矩陣(三元組表示)的積。 5 上機實訓(xùn)5:樹的遍歷及應(yīng)用一、 實訓(xùn)目的1) 掌握樹和二叉樹的一些基本術(shù)語,二叉樹的定義(邏輯結(jié)構(gòu))、存儲結(jié)構(gòu)及二叉樹上相關(guān)算法的基本思路。2) 掌握二叉樹各種遍歷的遞歸設(shè)計思想、二叉排序樹、哈夫曼樹和哈夫曼編碼的設(shè)計思想及具體的C語言實現(xiàn)。二、 實驗理論知識1) 二叉樹的存儲結(jié)構(gòu)二叉樹可以采用順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。l 順序存儲結(jié)構(gòu)所謂二叉樹的順序存儲,就是用一組連續(xù)的存儲單元存放二叉樹中的結(jié)點元素。一般是按照二叉樹結(jié)點從上至下、從左到右的順序存儲。因此,依據(jù)二叉樹的性質(zhì),完全二叉樹和滿二叉樹采用順序存儲比較合適。l 鏈?zhǔn)酱鎯Y(jié)構(gòu)二叉樹的鏈?zhǔn)酱鎯Y(jié)構(gòu)是指用一個鏈表來存儲一棵二叉樹,二叉鏈表是二叉樹最常用的存儲結(jié)構(gòu)。二叉鏈表中每個結(jié)點由一個數(shù)據(jù)域,兩個指針域組成,一個指針指向左孩子,另一個指向右孩子。2) 二叉樹的遍歷及其應(yīng)用二叉樹的遍歷是指按照某種順序訪問二叉樹中的每個結(jié)點,使每個結(jié)點被訪問一次且僅被訪問一次。二叉樹是由三個基本單元組成:根結(jié)點、左子樹和右子樹。只要依次遍歷這三部分,就可以遍歷整個二叉樹。若以D、L、R分別表示訪問根結(jié)點、遍歷根結(jié)點的左子樹、遍歷根結(jié)點的右子樹,則二叉樹的遍歷方式有六種:DLR、LDR、LRD、DRL、RDL和RLD。如果限定先左后右,再把訪問根結(jié)點穿插其中,則只有三種不同的遍歷方式,即DLR(稱為先序遍歷)、LDR(稱為中序遍歷)和LRD(稱為后序遍歷)。3) 赫夫曼樹及其編碼在權(quán)為w1,w2,…,wn的n個葉子結(jié)點的所有二叉樹中,帶權(quán)路徑長度WPL最小的二叉樹稱為最優(yōu)二叉樹或哈夫曼樹。赫夫曼樹的n個葉子結(jié)點分別表示n個字符,且約定左分支表示字符39。039。,右分支表示字符39。139。,則可以從根結(jié)點到葉子結(jié)點的路徑上分支字符組成的字符串作為該葉子結(jié)點字符的編碼。由此得到的二進制編碼便稱為赫夫曼編碼。三、 實訓(xùn)案例與分析【實例1】二叉樹的遍歷及其應(yīng)用【案例分析】采用二叉鏈表作為二叉樹的存儲結(jié)構(gòu),實現(xiàn)如下功能:1) 輸入二叉樹的特殊先序序列,建立二叉樹2) 實現(xiàn)二叉樹的中序遍歷3) 求二叉樹的深度4) 求二叉樹中葉子結(jié)點的數(shù)目數(shù)據(jù)結(jié)構(gòu)定義為:typedef char ElemType。typedef struct BTNode{ElemType data。struct BTNode *lchild,*rchild。 /*左右子女指針*/}BTNode,*BTree?!緟⒖汲绦颉縤nclude include typedef char ElemType。typedef struct BTNode{ElemType data。struct BTNode *lchild,*rchild。 /*左右子女指針*/}BTNode,*BTree。void create_bitree(BTree *T){ /*按先序次序輸入二叉樹結(jié)點的字符,39。39。字符表示空樹*//*構(gòu)造二叉樹的二叉鏈表T */char ch。ch=getchar()。if(ch==39。39。) *T=NULL。else{ *T=(BTree)malloc(sizeof(BTNode))。(*T)data=ch。 /*生成根結(jié)點*/create_bitree(amp。(*T)lchild)。/* 構(gòu)造左子樹*/create_bitree(amp。(*T)rchild)。/* 構(gòu)造右子樹*/}} void inorder(BTree T){ if(T){inorder(Tlchild)。printf(%3c,Tdata)。inorder(Trchild)。}}/*inorder*/int deep_bitree(BTree T ){ /*編寫遞歸算法求二叉樹的深度*/int n,nl,nr。if(T){nl=deep_bitree(Tlchild)。nr=deep_bitree(Trchild)。if(nl=nr)n=nl+1。elsen=nr+1。}elsen=0。return(n)。} /*deep_bitree*/int leaf_number(BTree T ){ /*編寫遞歸算法求二叉樹中葉子結(jié)點的數(shù)目*/int num,lnum,rnum。if(T){if(!Tlchild amp。amp。 !Trchild) num=1。else{lnum=leaf_number(Tlchild)。rnum=leaf_number(Trchild)。num=lnum+rnum。}}else num=0。return(num)。}/*leaf_number*/main(){BTree T。printf(\ninput bitree char : \n)。create_bitree(amp。T)。printf(\nthe deep bitree T is %d,deep_bitree(T))。printf(\nthe leaf number of bitree T is %d,leaf_number(T))。printf(\nthe inorder list of bitree T : \n)。inorder(T)。getchar()。getchar()。}【測試結(jié)果】input bitree char : a b c e d the deep bitree T is 3the leaf number of bitree T is 3the inorder list of bitree T: c b e a d【實例2】構(gòu)造赫夫曼樹及赫夫曼編碼的實現(xiàn)【實例分析】程序功能要求:1) 輸入n個葉結(jié)點的權(quán)值,構(gòu)造赫夫曼樹。2) 約定左分支表示字符39。039。,右分支表示字符39。139。,根據(jù)赫夫曼樹構(gòu)造赫夫曼編碼,以指向字符串的指針數(shù)組來存放,從葉子到根逆向求每個葉結(jié)點的赫夫曼編碼。數(shù)據(jù)結(jié)構(gòu)定義為:typedef struct{int weight。/*權(quán)值*/int parent, lchild, rchild。}htnode,*huftree?!緟⒖汲绦颉縤nclude include typedef struct{int weight。int parent, lchild, rchild。}htnode,*huftree。typedef char ** huffmancode。huftree ht。huffmancode hc。int n。void huffmancoding()/*赫夫曼編碼子函數(shù)*/{ int i,j,m,c,f。int s1,s2,w1,w2。int start。huftree p。char *cd。m=2*n1。ht=(huftree)malloc((m+1)*sizeof(htnode))。for(p=ht+1,i=1。 i=m。++i,++p){ pweight=0。 pparent=0。plchild=0。 prchild=0。}printf(\ninput %d weight : ,n)。for(i=1。i=n。++i)scanf(%d,amp。ht[i].weight)。for(i=n+1。 i=m。 ++i){s1=s2=1。 w1=w2=100。for(j=1。j=i1。j++)if(ht[j].parent==0)if(ht[j].weightw1){ w2=w1。w1=ht[j].weight。s2=s1。s1=j。}elseif(ht[j].weightw2){ w2= ht[j].weight。s2=j。}ht[s1].parent=i。 ht[s2].parent=i。ht[i].lchild=s1。 ht[i].rchild=s2。ht[i].weight=ht[s1].weight+ht[s2].weight。}hc=(huffmancode)malloc((n+1)*sizeof(char*))。cd=(char *)malloc(n*sizeof(char))。cd[n1]=39。\039。for(i=1。i=n。++i){start=n1。for(c=i,f=ht[i].parent。f。c=f,f=ht[f].parent){if(ht[f].lchild==c) cd[start]=39。039。else cd[start]=39。139。hc[i]=(char*)malloc((nstart)*sizeof(char))。strcpy(hc[i],amp。cd[start])。}free(cd)。}printf(\noutput huffmancode : \n)。/*輸出赫夫曼編碼*/for(i=1。i=n。i++)printf(\n%2d : %s,ht[i].weight,hc[i])。}main(){printf(\ninput n : )。
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1