#include #include #define maxsize 100
/****型別宣告****/
typedef structtriple;
typedef structtsmatrix;
/****函式宣告****/
//初始化三元組順序表
//@flag 1表明需要進行輸入,0表示不需要進行輸入
tsmatrix * init(int flag);
//對順序表進行排序,這個在初始化中用到
void sorttable(tsmatrix *a,int left,int right);
//按照矩陣的形式輸出三元組順序表
void print(tsmatrix *a);
//矩陣轉置,將結果存到b中
void transposetsmatrix(tsmatrix *b,tsmatrix *a);
int main(void)
tsmatrix * init(int flag)
sorttable(a,1,a->nums);
//在輸入時,不一定按照行號公升序輸入,這裡用快速排序進行排序
}return a;
}void print(tsmatrix *a)
}printf("\n");
for(int i=1;i<10*a->cols;++i)
printf("-");
return ;
}void transposetsmatrix(tsmatrix *b,tsmatrix *a);
int position[maxsize]=;
//計算num陣列
for(int i=1;inums+1;++i)
++num[a->data[i].col];
//計算pos陣列,將pos[1]初始化為1
for(int i=2;icols+1;++i)
position[i]=num[i-1]+position[i-1];
int pos;//記錄轉置後的位置
for(int i=1;inums+1;++i)
} void sorttable(tsmatrix *a,int left,int right)
a->data[left]=a->data[i];
a->data[i]=temp;
sorttable(a,left,i-1);
sorttable(a,i+1,right);
return ;
}
三元組稀疏矩陣快速轉置
稀疏矩陣是只儲存非零元的行值 列值 元素值 data 0 來儲存矩陣的行數 列數 非零元個數 struct position struct list void quick transpose list l,list s 記錄每一列第乙個非零元的位置 int col num l.data 0 col ...
三元組矩陣轉置
include include define maxsize 100 非零元的最大個數 define elentype int define status int 返回值型別 define ok 1 define error 0 define overflow 1 稀疏矩陣的三元組儲存結構 type...
稀疏矩陣三元組的快速轉置
include include using namespace std define maxsize 1024 define elemtype int define status int 三元組 typedef struct tripletriple 由三元組組成的表 typedef struct ...