[数据结构]如何节省程序空间
来源:互联网 发布:qq飞车改装数据最高 编辑:程序博客网 时间:2024/05/17 17:54
数据结构---如何节省空间
1,稀疏矩阵
稀疏矩阵
定义:对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse)。
如果矩阵中每一个点都用数组方式表示,那么会浪费很大的空间,因为大部分矩阵中的点的值都为0,因此可以采用一个一维数组表示n列,然后每一列采用一个链表的形式来表示,这样会节省很大的空间。
#include <stdio.h> #define MaxSize 100 typedef int DataType; typedef struct { DataType v; int i, j; }TriTupleNode; typedef struct { TriTupleNode data[MaxSize]; //三元组数组 int m, n, t; //行数 列数以及非零元个数 }TriTupleTable; void CreateTriTupleTable(TriTupleTable *T) { //int m, n, t; int i; printf("输入行数,列数以及非零元的个数:"); scanf("%d%d%d", &T->m, &T->n, &T->t); for (i=1; i<=T->t; ++i) { printf("请输入第%d个顶点的行号列号以及值", i); scanf("%d%d%d", &T->data[i].i, &T->data[i].j, &T->data[i].v); } } void Traverse(TriTupleTable *T) { int i; printf("%d %d %d\n", T->m, T->n, T->t); for (i=1; i<=T->t; ++i) { printf("%d %d %d\n", T->data[i].i, T->data[i].j, T->data[i].v); } } void TransMatrix(TriTupleTable *A, TriTupleTable*B) { int p, q, col; B->m = A->n; B->n = A->m; B->t = A->t; if (0 == B->t) return ; q = 0; for (col=0; col<A->n; ++col) for (p=0; p<A->t; ++p) { if (A->data[p].j == col) { B->data[q].i = A->data[p].j; B->data[q].j = A->data[p].i; B->data[q].v = A->data[p].v; ++q; } } } int main(void) { TriTupleTable A, B; CreateTriTupleTable(&A); Traverse(&A); TransMatrix(&A, &B); Traverse(&B); return 0; }
2,通过bitmap的方式
0 0
- [数据结构]如何节省程序空间
- proto如何做到节省空间。
- 如何让算法更节省空间
- 节省空间
- Latex中如何去掉作者和日期以节省空间
- 多级页表如何节省进程页表空间
- 多级页表如何节省进程页表空间
- 如何设置字段的长度查询最快又节省空间?
- 多级页表如何节省进程页表空间
- IAR编译器如何节省代码占用的flash空间?
- Redis节省空间
- UIScrollView 节省空间
- 联合:节省空间的类
- 创建竖表节省空间
- 如何节省网站流量
- 如何节省搬家费用
- 如何节省网站流量
- 如何节省内存空间
- 让你打开眼界的生活小创意!!!!
- 隐藏的你能发现么
- hdu 1711 Number Sequence
- c# winform实现buttom大小的改变
- enctype="multipart/Form-data"取不到值
- [数据结构]如何节省程序空间
- vlan
- 一个viewpage的demo
- VBS学习日记(十) WMI 基础
- Android OTA 的功能实现和修改
- C++按行读取文本文件
- python codecs模块
- sscanf函数用法详解
- Linux 压缩文件与解压命令