系列文章目录
第七话 数据结构之特殊矩阵
文章目录
- 一、了解什么是数组
- 二、数组的基本特征
-
三、上下三角矩阵
- 1.上三角矩阵
- 2.下三角矩阵
- 3.实现运用
- 四、稀疏矩阵
- 五、总结
前言
数组和广义表,可看成是线性表的扩展。即线性表中的数据元素既可以是单个元素,也可以是一个线性结构。数组中的每个数据元素可用类型相同的数组来表示;广义表则比较灵活,每个数据元素可以是不在分的原子类型,也可以是子表。数组和广义表都是常用的数据结构,在相关领域有着广泛的应用。
一、了解什么是数组?
数组是一种很多高级语言都支持的、应用广泛的数据类型,可以看作线性表的推广。数组作为一种数据类型。从逻辑结构上看,数组可以看成是一般线性表的特殊形式;二维数组可以看成是线性表的线性表。
二、数组的基本特征
1.不变性
数组具有固定格式和数量,每个数据元素用唯一的一组下标来标识。因此,在数组上不能做插入、删除元素的操作。
2、顺序存储
由于数组具有一经生成即长度固定、连续存放的特性,所以一般都采用顺序存储结构来存储。
三、数组的上下三角矩阵
1、上三角矩阵
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
int a[N*(N+1)/2+1] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,50};
int i,j;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
if(i>j){
printf("%3d",a[N*(N+1)/2]);
}else{
printf("%3d",a[i*(2*N-i+1)/2+j-i]);
}
}
printf("\n");
}
return 0;
}
在主函数实现如下:
2、下三角矩阵
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
int a[N*(N+1)/2+1] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,50};
int i,j;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
if(i>=j){
printf("%3d",a[i*(i+1)/2+j]);
}else{
printf("%3d",a[N*(N+1)/2]);
}
}
printf("\n");
}
return 0;
}
在主函数中实现如下:
四、稀疏矩阵
1、根据如下图来创造一个稀疏矩阵
图的意思为:
总共有6个非零元素
在第2行第1列有一个元素6,
在第2行第9列有一个元素2
在第3行第6列有一个元素8
以此类推...
形成如下图的稀疏矩阵
#include <stdio.h>
#include <stdlib.h>
#define maxsize 15
typedef struct{
int i;
int j;
int v;
}node;
typedef struct{
node date[maxsize];
int row;
int col;
int count;
}Matrix;
int main(void)
{
Matrix a;
a.date[0].i = 1;
a.date[0].j = 0;
a.date[0].v = 6;
a.date[1].i = 1;
a.date[1].j = 8;
a.date[1].v = 2;
a.date[2].i = 2;
a.date[2].j = 5;
a.date[2].v = 8;
a.date[3].i = 4;
a.date[3].j = 2;
a.date[3].v = 3;
a.date[4].i = 4;
a.date[4].j = 3;
a.date[4].v = 5;
a.date[5].i = 6;
a.date[5].j = 7;
a.date[5].v = 9;
a.row = 9;
a.col = 9;
a.count = 6;
int k,n,m;
int flag;
for(k=0;k<a.row;k++){
for(n=0;n<a.col;n++){
flag = 0;
for(m=0;m<a.count;m++){
if(k==a.date[m].i&&n==a.date[m].j){
printf("%3d",a.date[m].v);
flag=1;
break;
}
}
if(flag==0){
printf("%3d",0);
}
}
printf("\n");
}
return 0;
}
在主函数中实现如下:
五、总结
1、特殊矩阵的压缩存储
针对三角矩阵,主要掌握进行压缩存储时的下标变换公式
2、稀疏矩阵的压缩存储文章来源:https://www.toymoban.com/news/detail-595376.html
稀疏矩阵的压缩存储,一般用三元组的顺序存储,少数用十字链表存储文章来源地址https://www.toymoban.com/news/detail-595376.html
到了这里,关于数据结构--矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!