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

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)講義partppt課件-文庫(kù)吧資料

2024-11-09 22:18本頁(yè)面
  

【正文】 ListNode Type * GetNode (const Type amp。 ListNode Type *NextNode ( ) {return link。 ListNode(const Type amp。 //單鏈表類的前視聲明 template class Type class ListNode{ //鏈表結(jié)點(diǎn)類的定義 friend class List Type。 設(shè)置頭結(jié)點(diǎn)的目的是為了簡(jiǎn)化對(duì)空表的特殊處理, 使得算法更簡(jiǎn)單、更有效。 當(dāng)每一結(jié)點(diǎn)中只有一個(gè)指針,并用來(lái)表示一個(gè)數(shù) 據(jù)元素到其后繼元素之間的接續(xù)關(guān)系,則稱這種 存儲(chǔ)結(jié)構(gòu)為單鏈表。 定義:用指針來(lái)表示數(shù)據(jù)元素之間關(guān)系的存儲(chǔ)結(jié)構(gòu) 稱之為鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。 2021/12/1 42 文本編輯 計(jì)算機(jī)應(yīng)用中要涉及大量的文本文件,文本文件由大量的串 (行)組成,在某些文本文件(如源程序)中,串(行)長(zhǎng)差異 很大,若每行都用等長(zhǎng)的串來(lái)存貯,則會(huì)浪費(fèi)存貯空間 解決的辦法之一是建立一個(gè)很大的字符數(shù)組作為所有串的共享空間 ——串值共享空間,再為每個(gè)串建立一個(gè)描述子,用于描述該串的長(zhǎng)度以及該串在串值共享空間中的位置等信息,并將這些描述子存入一順序表中,參見下圖: 2021/12/1 43 行表 (linelist) 串值共享空間( space) MaxSize1 . . . . free 行號(hào) 0 1 2 3 行長(zhǎng) 位置 行 2 行 3 行 0 行 1 . . . . . . . . . . . 自由空間起始地址 0 串值共享空間 ——String(串) 行表 ——Seqlist(順序表) 設(shè)計(jì)行內(nèi)字符插入、刪除操作算法 設(shè)計(jì)整行插入、刪除操作算法 2021/12/1 44 第三章 鏈表 順序表有下列缺點(diǎn): ( 1)插入、刪除操作時(shí)需要移動(dòng)大量元素, 效率較低; ( 2)最大表長(zhǎng)難以估計(jì),太大了浪費(fèi)空間, 太小了容易溢出。 If (s1==s2)… If (s1!=s2)… If (! s1)… Char c=s1[6]。 String s4。 s1 + = s3。 String s3 ( ― 。 String s2 ( ― Hello World ‖ )。 char * ch。 int Find(String pat) const。 char amp。 operator += (const String amp。)。} int operator ! () const {return curLen==0; } String amp。} int operator !=(const String amp。 int operator ==(const String amp。} int Length() const {return curLen; } String amp。String()。)。 } 2021/12/1 39 2。 delete [] rowStart。 rowStart[smArray[i].col]++。 [j].col=smArray[i].row。i++){ int j=rowStart[smArray[i].col]。 for (i=0。iCols。 rowStart[0]=0。iTerms。 i ++) rowSize[i] = 0。 if (Terms 0 ) { for (int i = 0。 = Rows。 SparseMatrixType b。 顯然應(yīng)有: rowStart[ i ] + rowSize[ i ] = rowStart[ i+1 ] . . . . . . . . . 共有 rowSize[ i ] 個(gè)元素 2021/12/1 37 上述公式表示,若已知稀疏矩陣第 i 列的第一個(gè)非零元素在轉(zhuǎn)置 矩陣的三元組表中的位置 rowStart [ i ] , 以及稀疏矩陣第 i 列的非零 元素個(gè)數(shù) rowSize [ i ] , 就可以算出第 i+1 列非零元素在轉(zhuǎn)置矩陣的 三元組表中的位置 rowStart [ i+1] 另外,根據(jù)轉(zhuǎn)置矩陣的定義可知: rowStart [ 0 ] = 0 因此: rowStart [ 1 ] = rowSize [ 0 ] + rowStart [ 0 ] = rowSize [ 0 ] rowStart [ 2 ] = rowSize [ 1 ] + rowStart [ 1 ] . . . . . . 因此,只要預(yù)先統(tǒng)計(jì)得到 rowSize [ i ] ( i = 0 , 1 , 2 , . . .) 就可以得到第 i + 1 列非零元素在轉(zhuǎn)置矩陣的三元組表中的位置 2021/12/1 38 template class Type SparseMatrixType SparseMatrixType:: FastTranspos( )// { int *rowSize = new int[Cols]。 聲明中的 Terms 對(duì)應(yīng)于順序表定義中的 last, MaxTerms 對(duì)應(yīng)于順序表定義中的 Maxsize, smArray 對(duì)應(yīng)于順序表定義中的 data ( 2)為稀疏矩陣聲明了四種操作: 壓縮( Compression) 轉(zhuǎn)置( Transpose) 相加( Add) 相乘( Multiply) 根據(jù)實(shí)際需要還可以聲明其他操作。 Trituple Type smArray[MaxTerms]。 SparseMatrixType Multiply(SparseMatrixType b)。 SparseMatrixType Transpose()。 ~SparseMatrix() {delete [ ] smArray。 Type value。因此用二維數(shù)組來(lái)存儲(chǔ)稀疏矩陣的空間利用率較低,必須考慮對(duì)稀疏矩陣的壓縮存儲(chǔ)表示。 } 2021/12/1 30 作業(yè): 定義多項(xiàng)式類的求表長(zhǎng)、查找、插入、刪除、判空 表判滿表、讀?。ǖ? i 個(gè)元素)等成員函數(shù),并用這些 函數(shù)實(shí)現(xiàn)前述的兩個(gè)多項(xiàng)式的相加操作。 termArray[ free ] . exp = e 。 return 。 return C 。 b++ ) NewTerm( termArray[b].coef , termArray[b].exp)。 for ( 。 a = finish 。 a++ 。 break 。 case ?? : NewTerm( termArray[b].coef , termArray[b].exp)。 b++ 。 if (c) NewTerm( c , termArray[a].exp ) 。amp。 float c。 int b =。 b = B . start; ( 4)當(dāng)兩個(gè)指針都未超出相應(yīng)多項(xiàng)式的最末位置時(shí),比較它們所 指示的對(duì)應(yīng)項(xiàng)的指數(shù): 若指數(shù)相等,則對(duì)應(yīng)項(xiàng)系數(shù)相加,若相加結(jié)果不為零,則在 C 中加入一個(gè)新項(xiàng) 若指數(shù)不等,則把指數(shù)小者拷貝到 C 中 ( 5)當(dāng)兩個(gè)指針中有一個(gè)超出了相應(yīng)多項(xiàng)式的最末位置,則將另 一個(gè)多項(xiàng)式的剩余部分拷貝到 C 中 2021/12/1 28 Polynomial Polynomial :: Add ( Polynomial B ) { Polynomial C。 // 共享空間中自由空間之起始下標(biāo) int start , finish 。 //共享空間(順序表)的最大項(xiàng)數(shù) static term termArray[MaxTerms]。 // 系數(shù) int exp。 // 多項(xiàng)式類的前視聲明 class term // 多項(xiàng)式中項(xiàng)(二元組)的類定義 { friend Polynomial。} // 則從 LA 中刪除該元素 else i ++。 // 在 LB 中查找該元素 if ( k== 1) // 未找到 { ( i )。 while ( i n ) { Type x = ( i )。 int m = ( )。 LA,Seqlist Type amp。 // 將該元素追加到 LA 中 n++。 // 從順序表 LB 中取一元素 int k=(x)。i=m1。 int m=()。 LB) // 合并順序表 LA 與 LB ,重復(fù)元素只留一個(gè),結(jié)果在 LA 中。 2021/12/1 20 順序表應(yīng)用舉例 當(dāng)將兩個(gè)順序表作集合考慮時(shí)的 “ 并 ” 與 “ 交 ” 操作算法 template class Type void Union(Seqlist Type amp。 } return 0。j++) data[j]=data[j+1]。 for (int j=i。若 x 在表中并成功刪除則返回 1, //否則返回 0 { int i=Find(x)。 } } 2021/12/1 17 ( 4)順序表刪除操作 為了刪除第 i 個(gè)元素,必須把從 i+ 1 到 last 的所有元素向前移動(dòng)一個(gè)元素位置,把第 i 個(gè)元素覆蓋掉: 1 2 . . . 0 i1 i i+1 last1 last 1 . . . . . . . . . . . . . . . 2021/12/1 18 template class Type int SeqlistType::Remove(Type amp。 data[i]=x。ji。 else { last++。 } 2021/12/1 15 ( 3)順序表插入操作 為了把新元素 x 插入到 i 處,必須把從 i 到 last 的所有元素成塊向后移動(dòng)一個(gè)元素位置,以空出第 i 個(gè)位置供 x 插入: x 2 3 1 先移動(dòng)后面元素 0 i1 i
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1