⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlp2.c

📁 数据结构稀疏矩阵的算法
💻 C
字号:
#include <stdio.h> 
#define MAXSIZE 1000 
#define ElemType int
typedef struct 
{ 
int x,y; 
ElemType v; 
}Mat; 

typedef struct 
{ 
Mat data[MAXSIZE+1]; 
int m,n,t; 
}Spmatrix; 

Spmatrix a,b;

int i,j; 

 

void input() 
{ 
i=0; 
a.data[0].x=1;  
printf("请输入矩阵的行,列和非零元素个数:\n"); 
scanf("%d,%d,%d",&a.m,&a.n,&a.t); 
printf("请输入矩阵元素,以 0,0,0 结束\n"); 
for(j=1;j<=a.t;j++)
{ 
i++; 
printf("请输入第%d个非零元素的坐标及值\t",i); 
scanf("%d,%d,%d",&a.data[i].x,&a.data[i].y,&a.data[i].v); 

if(a.data[i].x>a.m||a.data[i].x<1||a.data[i].y>a.n||a.data[i].y<1)
{printf("输入的下标越界,请重新输入\n");
	i--;
	j--;
continue; 
      }
b.data[(a.data[i].x-1)*a.n+a.data[i].y].v=a.data[i].v; 

        } 
   }

   void output() 
   { int m;
    	m=0;
 
  for(i=1;i<=a.m;i++) 
  for(j=1;j<=a.n;j++)
  {if (b.data[(i-1)*a.n+j].v!=m)
   printf("%2d",b.data[(i-1)*a.n+j].v);
   else
  printf("%2d",m);
 if(((i-1)*a.n+j)%a.n==0)
   printf("\n");
	
    }	
   }	
 
void sanyuan()
{
for(i=1;i<=a.t;i++)
printf("%2d%2d%2d\n",a.data[i].x,a.data[i].y,a.data[i].v); 	
printf("%2d%2d%2d",a.m,a.n,a.t);
}
void main() 
{
input();
printf("稀疏矩阵为:\n");
output();
printf("三元组表为:\n");
sanyuan();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -