第九周实践项目2—对称矩阵压缩存储的实现与应用(1)
2015-11-09 17:00
337 查看
/* Copyright(c)2015,烟台大学计算机与控制工程学院 Allrightsreserved. 文件名称:项目2-1.cbp 作者:刘晨筱 完成日期:2015年11月10日 版本号:v1.0 问题描述:(1)用压缩形式存储对称矩阵,实现下面的操作并测试 voidInit(int*&b);//为N阶对称矩阵初始化存储数据的一维数组B intValue(intb[],inti,intj);//返回存储在b[M]中,对应二维数组A[i][j]的值 voidAssign(intb[],inte,inti,intj);//将e赋值给对应二维数组元素A[i][j],要存储到B[M]中 voidDisp(intb[]);//输出压缩存储在b中的对称矩阵 voidDestroy(intb[]);//销毁存储空间 输入描述:无 程序输出:测试结果 */ 代码:
#include<stdio.h> #include<malloc.h> #defineN4 //为N阶对称矩阵初始化存储数据的一维数组B voidInit(int*&b) { b=(int*)malloc(sizeof(int)*(N*(N+1)/2)); } //返回存储在b[M]中,对应二维数组A[i][j]的值 intValue(intb[],inti,intj) { if(i>=j) returnb[(i*(i+1))/2+j]; else returnb[(j*(j+1))/2+i]; } //将e赋值给对应二维数组元素A[i][j],要存储到B[M]中 voidAssign(intb[],inte,inti,intj) { if(i>=j) b[(i*(i+1))/2+j]=e; else b[(j*(j+1))/2+i]=e; return; } //输出压缩存储在b中的对称矩阵 voidDisp(intb[]) { inti,j; for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%4d",Value(b,i,j)); printf("\n"); } } //销毁存储空间 voidDestroy(intb[]) { free(b); } intmain() { int*b1;//指向整型的指针,待初始化 inti,j; intv; Init(b1); printf("请输入对称矩阵(只需要输入下三角部分即可)\n"); for(i=0;i<N;i++) { printf("输入第%d行的%d个数据元素:",i+1,i+1); for(j=0;j<=i;j++) { scanf("%d",&v); Assign(b1,v,i,j); } } Disp(b1); Destroy(b1); return0; }
运行结果:
相关文章推荐
- 国内公有云对比(1)- 功能篇
- JAVA抽象类与接口的区别
- 第九周 稀疏矩阵的三元表示的实现
- 【软考之路】软考总结
- 第八周,建立顺序串的算法库。
- 利用Core Plot绘制柱状图
- tomcat配置https双向认证
- MySQL命令执行sql文件的两种方法
- 揭开Spring事务处理
- UI 学习 第一章 UIWindow UIview
- 一般处理程序ashx接收post参数
- jquery,js引入css文件,js引入头尾
- java面向对象之接口与多态
- 使用Cocos2d-lua开发植物大战僵尸06-僵尸类的实现
- kuangbin大牛的模板
- nginx 配置为play!的前端http服务器
- Ubuntu Linux下安装Oracle JDK
- 二叉树遍历的算法
- 第十一周 项目1-2 二叉树的构造
- linux redhat 下让redis以服务方式运行