#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