基於三元組表儲存稀疏矩陣求鞍點 C語言版

2021-10-12 17:35:34 字數 2970 閱讀 3012

資料結構課

#include

#include

#define maxsize 10

typedef

struct

trituplenode;

typedef

struct

tritupletable;

int flag;

// 普通二維矩陣實現

void

easy_way()

}//輸出

printf

("\n-----------------------\n");

printf

("\n輸入的二維矩陣為:\n");

for(i=

0;i)printf

("\n");

}printf

("\n-----------------------\n");

int s,count=0;

// int min,max;

for(j=

0;j//找出這行最小值

s=0;

for(i=

0;i//找出這行有幾個最小值

// printf("min:%d\n",min);

max = min;

for(i=

0;i(k==m-1)

}}}if

(count ==0)

}// sort

//防止使用者亂序輸入

void

tuplesort

(tritupletable *a)}if

(a->data[x]

.i>a->data[x+1]

.i)}

}void inittrituplenode (tritupletable *a)

else

if(i==-1

)break;w:

printf

("輸入矩陣元素的列: ");

scanf

("%d"

,&j);if

(j>a->n)

else

if(i==-1

)break

;printf

("輸入矩陣元素的值: ");

scanf

("%d"

,&val)

; a->data[k]

.i=i;

a->data[k]

.j=j;

a->data[k]

.v=val;

k++;}

tuplesort

(a);

//防止使用者亂序輸入

}void

showmatrix

(tritupletable *a)

else

printf

("0\t");

}printf

("\n");

}}//普通轉置

void

transposesmatrix

(tritupletable *a,tritupletable *b)}}

void

isad

(tritupletable *a,

int x,

int min)

else

}for

(t =

1; t<=a->t; t++)}

}// printf("\n(%d,%d)值為:%d\n",index_x,index_y,tem);if(

(index_x == x)

&&(min == tem)

&&(x!=0)

)}void

find

(tritupletable *a)

else

}// printf("\n第乙個數:%d,%d,%d\n",index_x,index_y,tem);

for(t =

1; t<=a->t; t++)}

}// printf("\n第%d行最小的數:(%d,%d)值為:%d\n",p,index_x,index_y,tem);

// 將最小的這個數的 縱座標 index_y 傳給 轉置矩陣 當作橫座標去找該行最大值 若找到了 這個 index_k

// 並且等於 index_x 則返回說這個是鞍點

isad

(a,index_y,tem);}

if(flag !=1)

}int

main()

忙碌了一下午的萬師傅終於關掉了程式(暴力真香)

測試用例1:

請輸入矩陣最大行數: 4

請輸入矩陣最大列數: 4

請輸入矩陣有效數字的個數: 7

輸入矩陣元素的行: 2

輸入矩陣元素的列: 2

輸入矩陣元素的值: 2

輸入矩陣元素的行: 2

輸入矩陣元素的列: 3

輸入矩陣元素的值: 7

輸入矩陣元素的行: 3

輸入矩陣元素的列: 1

輸入矩陣元素的值: 4

輸入矩陣元素的行: 3

輸入矩陣元素的列: 2

輸入矩陣元素的值: 3

輸入矩陣元素的行: 3

輸入矩陣元素的列: 3

輸入矩陣元素的值: 2

輸入矩陣元素的行: 3

輸入矩陣元素的列: 4

輸入矩陣元素的值: 1

輸入矩陣元素的行: 4

輸入矩陣元素的列: 2

輸入矩陣元素的值: 1

示例1輸出

0 0 0 0

0 2 7 0

4 3 2 1

0 1 0 0

第(3,4)為鞍點值為:1

暴力查詢,相關結構參考

稀疏矩陣的三元組順序儲存

該資料結構的操作主要是陣列的相加 和相乘,這兩個演算法全是我個人所寫,絕無參考,經測試應該少有bug a.h include define false 0 define true 1 define ok 1 define error 0 define max size 100 typedef int...

稀疏矩陣的三元組儲存演算法

稀疏矩陣,是零元素較多的矩陣。一般只要滿足 t 1 3 m n,t是非零元素個數,mn是矩陣行列數,就可以用三元組表示稀疏矩陣,可以節省空間。稀疏矩陣的壓縮儲存採用三元組的方法實現。其儲存規則是 每乙個非零元素佔一行,每行中包含非零元素所在的行號 列號 非零元素的數值。為完整描述稀疏矩陣,一般在第一...

稀疏矩陣(三元組順序表實現)

定義了乙個稀疏矩陣類,有轉置和相乘,相加三個功能,主要是熟悉稀疏矩陣的三元組順序表儲存的一些操作,和一般的矩陣不同的地方,兩個轉置的演算法,第乙個是較容易想到的,書上管它叫 按需點菜 法,就是按一開始列的順序,乙個個轉為新矩陣中行的順序。第二個叫作 按位就坐 法,就是條件兩個輔助陣列,確定每一列中第...