#include <stdio.h>
#include <stdlib.h>
#define SMAX 100
typedef struct SPNode
{
int i,j,v;
}SPNode;
struct sparmatrix
{
int rows,cols,terms;
SPNode data [SMAX];
};
sparmatrix CreateSparmatrix()
{
sparmatrix A;
printf("\n\t\t請輸入稀疏矩陣的行數,列數和非零元素個數(用逗號隔開):");
scanf("%d,%d,%d",&A.cols,&A.terms);
for(int n=0;n<=A.terms-1;n++)
{
printf("\n\t\t輸入非零元素值(格式:行號,列號,值):");
scanf("%d,%d,%d",&A.data[n].i,&A.data[n].j,&A.data[n].v);
}
return A;
}
void ShowSparmatrix(sparmatrix A)
{
int k;
printf("\n\t\t");
for(int x=0;x<=A.rows-1;x++)
{
for(int y=0;y<=A.cols-1;y++)
{
k=0;
for(int n=0;n<=A.terms-1;n++)
{
if((A.data[n].i-1==x)&&(A.data[n].j-1==y))
{
printf("%8d",A.data[n].v);
k=1;
}
}
if(k==0)
printf("%8d",k);
}
printf("\n\t\t");
}
}
void sumsparmatrix(sparmatrix A)
{
SPNode *p;
p=(SPNode*)malloc(sizeof(SPNode));
p->v=0;
int k;
k=0;
printf("\n\t\t");
for(int x=0;x<=A.rows-1;x++)
{
for(int y=0;y<=A.cols-1;y++)
{
for(int n=0;n<=A.terms;n++)
{
if((A.data[n].i==x)&&(A.data[n].j==y)&&(x==y))
{
p->v=p->v+A.data[n].v;
k=1;
}
}
}
printf("\n\t\t");
}
if(k==1)
printf("\n\t\t對角線元素的和::%d\n",p->v);
else
printf("\n\t\t對角線元素的和為::0");
}
int main()
{
int ch=1,choice;
struct sparmatrix A;
A.terms=0;
while(ch)
{
printf("\n");
printf("\n\t\t 稀疏矩陣的三元組系統 ");
printf("\n\t\t*********************************");
printf("\n\t\t 1------------創建 ");
printf("\n\t\t 2------------顯示 ");
printf("\n\t\t 3------------求對角線元素和");
printf("\n\t\t 4------------返回 ");
printf("\n\t\t*********************************");
printf("\n\t\t請選擇菜單號(0-3):");
scanf("%d",&choice);
switch(choice)
{
case 1:
A=CreateSparmatrix();
break;
case 2:
ShowSparmatrix(A);
break;
case 3:
SumSparmatrix(A);
break;
default:
system("cls");
printf("\n\t\t輸入錯誤!請重新輸入!\n");
break;
}
if (choice==1||choice==2||choice==3)
{
printf("\n\t\t");
system("pause");
system("cls");
}
else
system("cls");
}
}
資源簡介:#include <stdio.h> #include <stdlib.h> #define SMAX 100 typedef struct SPNode { int i,j,v; }SPNode; struct sparmatrix { int rows,cols,terms; SPNode data [SMAX]; }; sparmatrix CreateSparmatrix() { sparmatrix A; printf("\n\t\t請輸入稀疏...
上傳時間: 2020-06-11
上傳用戶:ccccy
資源簡介:單片機的C語言中數組的用法
上傳時間: 2013-11-01
上傳用戶:BIBI
資源簡介:數組排序,含bubble,quick,insertion,selection四種方法
上傳時間: 2015-01-04
上傳用戶:aa17807091
資源簡介:二維數組的冒泡排序
上傳時間: 2014-01-25
上傳用戶:從此走出陰霾
資源簡介:字符串數組排序
上傳時間: 2014-01-03
上傳用戶:zmy123
資源簡介:數組排序算法,這個程序的頭文件中包含四種排序方法:泡沫排序法(bubble),插入排序法(insertion),快速排序法(quick)和選擇排序法(selection)。頭文件中還使用了模板技術,以便可以同時實現幾種類型的排序算法
上傳時間: 2015-01-05
上傳用戶:Thuan
資源簡介:本代碼提供對動態數組的支持,在內存中程序將數據分塊存放,避免了大塊內存的申請。同時,與普通的雙向鏈表不同,本代碼提供了對內部數據的快速索引,大大提高了數據訪問速度
上傳時間: 2015-01-07
上傳用戶:lixinxiang
資源簡介:迷宮問題 數組解法
上傳時間: 2014-01-13
上傳用戶:zaizaibang
資源簡介:1.以二維數組list[N+1] 表示地圖,N表示區域數目,數組中以元素值為0表示不鄰接,1表示鄰接,限定區域數目N<=50. 2.用戶先輸入區域數目N,再輸入鄰接區域的代碼,鄰接可只寫一次,區域的代碼為0~N,N個為區域,一個為外部區域,或輸入N-1,則可不包括外部區...
上傳時間: 2015-01-10
上傳用戶:1966640071
資源簡介:哈希表設計:數組,結構體
上傳時間: 2015-01-10
上傳用戶:二驅蚊器
資源簡介:怎樣在CodeVision中使用結構型數組的用法實例1
上傳時間: 2015-01-11
上傳用戶:LouieWu
資源簡介:為一個字節或字符數組或串計算md5值,內部只創建一個數組,節省分配時間,節省內存 完全是static方法,線程安全 注意對返回值的處理,見注釋
上傳時間: 2015-01-14
上傳用戶:cmc_68289287
資源簡介:關于數組排序的經典程序。
上傳時間: 2013-12-25
上傳用戶:rocketrevenge
資源簡介:數組排序的經典程序shell。
上傳時間: 2015-01-15
上傳用戶:頂得柱
資源簡介:還是數組見的轉換小程序
上傳時間: 2014-01-16
上傳用戶:tb_6877751
資源簡介:如何給鏈表數組賦值,很適合初學數據結構的朋友。
上傳時間: 2013-12-27
上傳用戶:dragonhaixm
資源簡介:多維數組(二維以下和數組)在內存中也是按順序存放的,因此也可以用這種方式傳遞。但是,如果要確切知道每個元素在數組中的位置,就應給出各維的最大索引值
上傳時間: 2014-09-10
上傳用戶:WMC_geophy
資源簡介:c++數組。一維數組的插入,刪除,排序
上傳時間: 2015-01-21
上傳用戶:skfreeman
資源簡介:一個用數組的方法解決大數、巨數的階乘結果越界問題的算法.
上傳時間: 2014-01-02
上傳用戶:dapangxie
資源簡介:多元數組得各類運算
上傳時間: 2015-01-30
上傳用戶:weiwolkt
資源簡介:矩陣得基本運算(數組實現)
上傳時間: 2013-12-17
上傳用戶:2525775
資源簡介:100階乘的數組存儲算法
上傳時間: 2013-12-11
上傳用戶:youke111
資源簡介:實現用三元組表示的稀疏數組的輸入、轉置、相加、輸出。可以直接輸入三元組,轉置和相加基于三元組進行,輸出的結果也為三元組。
上傳時間: 2013-11-26
上傳用戶:chens000
資源簡介:vb數組一次賦值函數
上傳時間: 2014-12-07
上傳用戶:gououo
資源簡介:一個求二維數組鞍點的實例
上傳時間: 2014-01-20
上傳用戶:JIUSHICHEN
資源簡介:找出一個3x3數組的“鞍點”
上傳時間: 2013-12-13
上傳用戶:6546544
資源簡介:運算符重載數組的整體輸入與輸出
上傳時間: 2015-02-10
上傳用戶:yan2267246
資源簡介:數組堆棧與鏈表堆棧的實現代碼
上傳時間: 2015-02-12
上傳用戶:yd19890720
資源簡介:模擬指針,使用固定的數組模擬指針的內存分配,提高分配效率
上傳時間: 2014-01-25
上傳用戶:xinyuzhiqiwuwu
資源簡介:java數組應用與學習
上傳時間: 2015-02-19
上傳用戶:s363994250