/*******************行邏輯鏈結的順序表*****************/
#include#include#includeusing namespace std;
#define maxsize 12500 /// 假設非零元個數最大值為12500
#define maxrc 12500 ///假設的每行的個數的最大值12500
#define error -1
typedef struct triple;
typedef struct rlsmatrix;
void scanfrlsmatrix(rlsmatrix &m)}}
///求出rpos的值
int num[maxsize + 1];
if(m.tu)
/**這個求法在快速轉置中也用到了,那個求的是每一列的第乙個非零元的恰到位置
這個改一下
*/}void printfrlsmatrix(rlsmatrix m)
else printf("%3d",0);
}puts("");
}return ;
}/*************演算法5.3************/
int multsmareix(rlsmatrix m,rlsmatrix n,rlsmatrix &q)
/**前mu行,矩陣m每行最後乙個非零元素是m.rpos[arow + 1]-1;
第mu行,矩陣m每行最後乙個非零元素是m.tu;
*/for(int p = m.rpos[arow]; p < tp; ++p)
for(int q = n.rpos[brow]; q < t; ++q)//for q
}/// 求得q中的第crow( = arow)行的非零元
/**就是m行的第乙個非零元,去乘矩陣n的相對應的列q的每乙個非零元
結果儲存在ctemp陣列中。
當矩陣m該行的每乙個非零元p都乘完,
此時ctemp陣列裡儲存的就是q中第一行所有非零元(含零)的結果
*/for(int i=0;i<=4;i++)
printf("%d ",ctemp[i]);
printf("\n");
for(int ccol = 1; ccol <= q.nu; ++ccol)
/// 壓縮儲存該非零元,即把上面求得結果為0的元素去掉
if(ctemp[ccol])// if
}// for arow
}// if
}// multsmareix
int main()
資料結構(第五章)
樹下 第一講一.堆 什麼是堆?在講堆之前,我們先看看什麼是優先佇列。優先佇列 是一種特殊的佇列,從名稱上看,優先,顧名思義,取出的元素是按照一定的優先順序出隊的,而不是元素進入佇列的先後順序。優先佇列的完全二叉樹表示 堆的兩個特性 結構性 用陣列表示的完全二叉樹。有序性 任一結點的關鍵字是其子樹所有...
資料結構筆記 第五章
一.樹的邏輯結構 樹是乙個有限的集合,集合中的元素稱為結點。1 結點的個數為0 稱為空樹。2 結點的個數為1 此節點稱為根節點。3 節點的個數大於1 則除了根結點以外的結點又可分為多個集合,每乙個集合本身其實質上也是一棵樹,並且是根節點的子樹。二.二叉樹的邏輯結構 1 二叉樹的定義 二叉樹首先必須是...
資料結構筆記 第五章
雙親表示法 基本思想 用一維陣列來儲存樹的各個結點 一般 按層序儲存 陣列中的乙個元素對應樹中的乙個 結點,包括結點的資料資訊以及該結點的雙親在數 組中的下標 森林轉換為二叉樹 將森林中的每棵樹轉換成二叉樹 從第二棵二叉樹開始,依次把後一棵二叉樹的根 結點作為前一棵二叉樹根結點的右孩子,當所有二 叉...