|
|
#2
forever742019-10-29 21:01
|
程序代码:#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 12500//非0元的最大个数
#define random() rand()%10+0//a=rand()%(d-t)+t:生成一个[t,d)区间内的整数
#define m 10
#define n 10
#define C 4
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef int Status;
typedef struct
{
int i,j;
ElemType e;
}Triple;//三元组
typedef struct
{
Triple data[MAXSIZE+1];
int mu;
int nu;
int tu;//矩阵行数,列数,非0元个数
}TSMatrix;//稀疏矩阵:sparse matrix
Status RandomSparseMatrix(int (&Arr)[m][n]) //随机生成一个m行n列,并且含有C个非0元的稀疏矩阵
{
int i=0,j=0,k=1,p=1;
int data[C];
for(i=0;i<C;i++)//随机生成非0元的值,存到数组a[C]里面
{
srand(i);//随机数种子在变化
data[i]=rand()%100;
}
while(p<=C)
{
for(i=0;i<C;i++)
{
srand(p);
Arr[random()][random()]=data[i];//随机生成一个位置,该位置放置非0元
p++;
}
}
for(i=0;i<m;++i)
{
for(j=0;j<n;++j)
{
if(Arr[i][j]==NULL)//如果该位置值为空,则将该位置的值赋值为0
Arr[i][j]=0;
}
}
printf("Array[%d][%d] is: \n",m,n);
for(i=0;i<m;++i)
{
for(j=0;j<n;++j)
{
printf("%d\t", Arr[i][j]); // '\t'表示横向制表符
}
printf("\n");
}
return 0;
}
void main()
{
int Arr[m][n];
RandomSparseMatrix(Arr);
}
只有本站会员才能查看附件,请 登录