当前位置: 首页 > news >正文

路由器怎么做网站wordpress模板 sky

路由器怎么做网站,wordpress模板 sky,网站建设公司上海站霸,网站备案跟网安备案区别1. 背景说明 为了节省存储空间#xff0c;可以对这类矩阵进行压缩存储。所谓压缩存储是指#xff1a;为多个值相同的元只分配一个存储空间#xff0c;对零元不分配空间。 2. 示例代码 1)status.h /* DataStructure 预定义常量和类型头文件 */ #include string.h#i…1. 背景说明 为了节省存储空间可以对这类矩阵进行压缩存储。所谓压缩存储是指为多个值相同的元只分配一个存储空间对零元不分配空间。 2. 示例代码 1)status.h /* DataStructure 预定义常量和类型头文件 */ #include string.h#ifndef STATUS_H #define STATUS_H#define NONE #define FILE_NAME(X) strrchr(X, \\) ? strrchr(X,\\) 1 : X#define DEBUG#define CHECK_NULL(pointer) if (!(pointer)) { \printf(FuncName: %-15s Line: %-5d ErrorCode: %-3d\n, __func__, __LINE__, ERR_NULL_PTR); \return NULL; \ }#define CHECK_FALSE(value, ERR_CODE) if (!(value)) { \printf(FuncName: %-15s Line: %-5d ErrorCode: %-3d\n, __func__, __LINE__, ERR_CODE); \return FALSE; \ }#ifdef DEBUG #define CHECK_RET(ret, FORMAT, ...) if (ret ! RET_OK) { \printf(FileName: %-20s FuncName: %-15s Line: %-5d ErrorCode: %-3d FORMAT \n, FILE_NAME(__FILE__), __func__, __LINE__, ret, ##__VA_ARGS__); \return ret; \} #else #define CHECK_RET(ret, FORMAT, ...) #endif#ifdef DEBUG #define CHECK_VALUE(value, ERR_CODE, FORMAT, ...) if (value) { \printf(FileName: %-20s FuncName: %-15s Line: %-5d ErrorCode: %-3d FORMAT \n, FILE_NAME(__FILE__), __func__, __LINE__, ERR_CODE, ##__VA_ARGS__); \return ERR_CODE; \} #else #define CHECK_VALUE(value, ERR_CODE, FORMAT, ...) #endif/* 函数结果状态码 */ #define TRUE 1 /* 返回值为真 */ #define FALSE 0 /* 返回值为假 */ #define RET_OK 0 /* 返回值正确 */ #define ERR_MEMORY 2 /* 访问内存错 */ #define ERR_NULL_PTR 3 /* 空指针错误 */ #define ERR_MEMORY_ALLOCATE 4 /* 内存分配错 */ #define ERR_NULL_STACK 5 /* 栈元素为空 */ #define ERR_PARA 6 /* 函数参数错 */ #define ERR_OPEN_FILE 7 /* 打开文件错 */ #define ERR_NULL_QUEUE 8 /* 队列为空错 */ #define ERR_FULL_QUEUE 9 /* 队列为满错 */ #define ERR_NOT_FOUND 10 /* 表项不存在 */ typedef int Status; /* Status 是函数的类型,其值是函数结果状态代码如 RET_OK 等 */ typedef int Bollean; /* Boolean 是布尔类型,其值是 TRUE 或 FALSE */#endif // !STATUS_H 2) tripleSparseMatrix.h /* 稀疏矩阵的三元组顺序表存储表示头文件 */#include status.h#define MAX_SIZE 100typedef int ElemType;typedef struct {int i;int j;ElemType e; } Triple;typedef struct {Triple data[MAX_SIZE 1];int rowNum;int colNum;int noneZeroNum; } TSMatrix;/* 创建稀疏矩阵 *sMatrix */ Status CreateSMatrix(TSMatrix *sMatrix);/* 销毁稀疏矩阵 *sMatrix */ Status DestroySMatrix(TSMatrix *sMatrix);/* 按照矩阵形式输出 *sMatrisx */ Status PrintSMatrix(const TSMatrix *sMatrix);/* 由稀疏矩阵 *sMatrixA 复制得到 *sMatrixB */ Status CopySMatrix(const TSMatrix *sMatrixA, TSMatrix *sMatrixB);/* 求稀疏矩阵 *sMatrixA 和 *sMatrixB 的和矩阵 *sMatrixC */ Status AddSMatrix(const TSMatrix *sMatrixA, const TSMatrix *sMatrixB, TSMatrix *sMatrixC);/* 求稀疏矩阵 *sMatrixA 和 *sMatrixB 的差矩阵 *sMatrixC */ Status SubSMatrix(const TSMatrix *sMatrixA, TSMatrix *sMatrixB, TSMatrix *sMatrixC);/* 算法 5.1求稀疏矩阵 *sMatrix 的转置矩阵 *sMatrixT */ Status TransposeSMatrix(const TSMatrix *sMatrix, TSMatrix *sMatrixT);/* 算法 5.2快速求稀疏矩阵 *sMatrix 的转置矩阵 *sMatrixT */ Status FastTransposeSMatrix(const TSMatrix *sMatrix, TSMatrix *sMatrixT);/* 求稀疏矩阵 *sMatrixA 和 *sMatrixB 的乘积矩阵 *sMatrixC */ Status MultSMatrix(const TSMatrix *sMatrixA, const TSMatrix *sMatrixB, TSMatrix *sMatrixC); 3) tripleSparseMatrix.c /* 稀疏矩阵的三元组顺序表存储实现源文件 */#include tripleSparseMatrix.h #include stdio.h #include stdlib.h/* 创建稀疏矩阵 *sMatrix */ Status CreateSMatrix(TSMatrix *sMatrix) {CHECK_VALUE(!sMatrix, ERR_NULL_PTR, NONE);printf(Please input the row, col, noneZeroElement of the matrix: );scanf_s(%d%d%d, (sMatrix-rowNum), (sMatrix-colNum), (sMatrix-noneZeroNum));CHECK_VALUE((sMatrix-rowNum 1) || (sMatrix-colNum 1) || (sMatrix-noneZeroNum 0)|| (sMatrix-noneZeroNum (sMatrix-rowNum * sMatrix-colNum)) || (sMatrix-noneZeroNum MAX_SIZE),ERR_PARA, rowNum %d, colNum %d, noneZeroNum %d, sMatrix-rowNum, sMatrix-colNum, sMatrix-noneZeroNum);sMatrix-data[0].i 0;int row, col;ElemType e;int i;for (i 1; i sMatrix-noneZeroNum; i) {printf(Please input the row(1 ~ %d), col(1 ~ %d), and the value of %dth element: , sMatrix-rowNum,sMatrix-colNum, i);scanf_s(%d%d%d, row, col, e);CHECK_VALUE((row 1) || (row sMatrix-rowNum) || (col 1) || (col sMatrix-colNum) ||(row sMatrix-data[i - 1].i) || ((row sMatrix-data[i - 1].i) (col sMatrix-data[i - 1].j)),ERR_PARA, row %d, rowNum %d, col %d, colNum %d, lastRow %d, lastCol %d, row, sMatrix-rowNum,col, sMatrix-colNum, sMatrix-data[i - 1].i, sMatrix-data[i - 1].j);sMatrix-data[i].i row;sMatrix-data[i].j col;sMatrix-data[i].e e;}return RET_OK; }/* 销毁稀疏矩阵 *sMatrix */ Status DestroySMatrix(TSMatrix *sMatrix) {CHECK_VALUE(!sMatrix, ERR_NULL_PTR, NONE);sMatrix-rowNum sMatrix-colNum sMatrix-noneZeroNum 0;return RET_OK; }/* 按照矩阵形式输出 *sMatrisx */ Status PrintSMatrix(const TSMatrix *sMatrix) {CHECK_VALUE(!sMatrix, ERR_NULL_PTR, NONE);int count 1;for (int i 1; i sMatrix-rowNum; i) {for (int j 1; j sMatrix-colNum; j) {if ((count sMatrix-noneZeroNum) (sMatrix-data[count].i i) (sMatrix-data[count].j j)) {printf(%-3d, sMatrix-data[count].e);count;continue;}printf(%-3d, 0);}printf(\n);}return RET_OK; }/* 由稀疏矩阵 *sMatrixA 复制得到 *sMatrixB */ Status CopySMatrix(const TSMatrix *sMatrixA, TSMatrix *sMatrixB) {CHECK_VALUE(!sMatrixA || !sMatrixB, ERR_NULL_PTR, sMatrixA %p sMatrixB %p, sMatrixA, sMatrixB);errno_t ret memcpy_s(sMatrixB, sizeof(TSMatrix), sMatrixA, sizeof(TSMatrix));CHECK_RET(ret, NONE);return RET_OK; }/* 返回 num1 和 num2 的大小比较结果 */ int Compare(int num1, int num2) {return (num1 num2) ? -1 : ((num1 num2) ? 0 : 1); }/* 求稀疏矩阵 *sMatrixA 和 *sMatrixB 的和矩阵 *sMatrixC */ Status AddSMatrix(const TSMatrix *sMatrixA, const TSMatrix *sMatrixB, TSMatrix *sMatrixC) {CHECK_VALUE(!sMatrixA || !sMatrixB || !sMatrixC, ERR_NULL_PTR, sMatrixA %p, sMatrixB %p, sMatrixC %p,sMatrixA, sMatrixB, sMatrixC);CHECK_VALUE((sMatrixA-rowNum ! sMatrixB-rowNum) || (sMatrixA-colNum ! sMatrixB-colNum), ERR_PARA,sMatrixA_rowNum %d, sMatrixB_rowNum %d, sMatrixA_colNum %d, sMatrixB_colNum %d, sMatrixA-rowNum,sMatrixB-rowNum, sMatrixA-colNum, sMatrixB-colNum);sMatrixC-rowNum sMatrixA-rowNum;sMatrixC-colNum sMatrixA-colNum;int noneZeroNumA 1, noneZeroNumB 1, noneZeroNumC 0;errno_t ret;while ((noneZeroNumA sMatrixA-noneZeroNum) (noneZeroNumB sMatrixB-noneZeroNum)) {switch (Compare(sMatrixA-data[noneZeroNumA].i, sMatrixB-data[noneZeroNumB].i)) {case -1:ret memcpy_s((sMatrixC-data[noneZeroNumC]), sizeof(Triple), (sMatrixA-data[noneZeroNumA]), sizeof(Triple));break;case 0:switch (Compare(sMatrixA-data[noneZeroNumA].j, sMatrixB-data[noneZeroNumB].j)) {case -1:ret memcpy_s((sMatrixC-data[noneZeroNumC]), sizeof(Triple), (sMatrixA-data[noneZeroNumA]), sizeof(Triple));break;case 0:ret memcpy_s((sMatrixC-data[noneZeroNumC]), sizeof(Triple), (sMatrixA-data[noneZeroNumA]), sizeof(Triple));sMatrixC-data[noneZeroNumC].e sMatrixB-data[noneZeroNumB].e;if (sMatrixC-data[noneZeroNumC].e 0) {--noneZeroNumC;}break;case 1:ret memcpy_s((sMatrixC-data[noneZeroNumC]), sizeof(Triple), (sMatrixB-data[noneZeroNumB]), sizeof(Triple));break;}break;case 1:ret memcpy_s((sMatrixC-data[noneZeroNumC]), sizeof(Triple), (sMatrixB-data[noneZeroNumB]), sizeof(Triple));break;}CHECK_RET(ret, NONE);}while (noneZeroNumA sMatrixA-noneZeroNum) {ret | memcpy_s((sMatrixC-data[noneZeroNumC]), sizeof(Triple), (sMatrixA-data[noneZeroNumA]), sizeof(Triple));}while (noneZeroNumB sMatrixB-noneZeroNum) {ret | memcpy_s((sMatrixC-data[noneZeroNumC]), sizeof(Triple), (sMatrixB-data[noneZeroNumB]), sizeof(Triple));}CHECK_RET(ret, NONE);sMatrixC-noneZeroNum noneZeroNumC;CHECK_VALUE(noneZeroNumC MAX_SIZE, ERR_PARA, noneZeroNumC %d, noneZeroNumC);return RET_OK; }/* 求稀疏矩阵 *sMatrixA 和 *sMatrixB 的差矩阵 *sMatrixC */ Status SubSMatrix(const TSMatrix *sMatrixA, TSMatrix *sMatrixB, TSMatrix *sMatrixC) {CHECK_VALUE(!sMatrixA || !sMatrixB || !sMatrixC, ERR_NULL_PTR, sMatrixA %p, sMatrixB %p, sMatrixC %p,sMatrixA, sMatrixB, sMatrixC);CHECK_VALUE((sMatrixA-rowNum ! sMatrixB-rowNum) || (sMatrixA-colNum ! sMatrixB-colNum), ERR_PARA,sMatrixA_rowNum %d, sMatrixB_rowNum %d, sMatrixA_colNum %d, sMatrixB_colNum %d, sMatrixA-rowNum,sMatrixB-rowNum, sMatrixA-colNum, sMatrixB-colNum);sMatrixC-rowNum sMatrixA-rowNum;sMatrixC-colNum sMatrixA-colNum;for (int i 1; i sMatrixB-noneZeroNum; i) {sMatrixB-data[i].e * -1;}Status ret AddSMatrix(sMatrixA, sMatrixB, sMatrixC);CHECK_RET(ret, NONE);return RET_OK; }/* 算法 5.1求稀疏矩阵 *sMatrix 的转置矩阵 *sMatrixT */ Status TransposeSMatrix(const TSMatrix *sMatrix, TSMatrix *sMatrixT) {CHECK_VALUE(!sMatrix || !sMatrixT, ERR_NULL_PTR, sMatrix %p sMatrixT %p, sMatrix, sMatrixT);sMatrixT-rowNum sMatrix-colNum;sMatrixT-colNum sMatrix-rowNum;sMatrixT-noneZeroNum sMatrix-noneZeroNum;if (sMatrixT-noneZeroNum 0) {return RET_OK;}int noneZeroNumT 1;for (int col 1; col sMatrix-colNum; col) {for (int i 1; i sMatrix-noneZeroNum; i) {if (sMatrix-data[i].j ! col) {continue;}sMatrixT-data[noneZeroNumT].i sMatrix-data[i].j;sMatrixT-data[noneZeroNumT].j sMatrix-data[i].i;sMatrixT-data[noneZeroNumT].e sMatrix-data[i].e;noneZeroNumT;}}return RET_OK; }/* 算法 5.2快速求稀疏矩阵 *sMatrix 的转置矩阵 *sMatrixT */ Status FastTransposeSMatrix(const TSMatrix *sMatrix, TSMatrix *sMatrixT) {CHECK_VALUE(!sMatrix || !sMatrixT, ERR_NULL_PTR, sMatrix %p sMatrixT %p, sMatrix, sMatrixT);sMatrixT-rowNum sMatrix-colNum;sMatrixT-colNum sMatrix-rowNum;sMatrixT-noneZeroNum sMatrix-noneZeroNum;if (sMatrixT-noneZeroNum 0) {return RET_OK;}int *colNum (int *)malloc(sizeof(int) * (unsigned long long)(sMatrix-colNum 1));int *firstColNoneZero (int *)malloc(sizeof(int) * (unsigned long long)(sMatrix-colNum 1));for (int col 1; col sMatrix-colNum; col) {colNum[col] 0;}for (int i 1; i sMatrix-noneZeroNum; i) {colNum[sMatrix-data[i].j];}firstColNoneZero[1] 1;for (int col 2; col sMatrix-colNum; col) {firstColNoneZero[col] firstColNoneZero[col - 1] colNum[col - 1];}int col, order;for (int i 1; i sMatrix-noneZeroNum; i) {col sMatrix-data[i].j;order firstColNoneZero[col];sMatrixT-data[order].i sMatrix-data[i].j;sMatrixT-data[order].j sMatrix-data[i].i;sMatrixT-data[order].e sMatrix-data[i].e;firstColNoneZero[col];}free(colNum);free(firstColNoneZero);return RET_OK; }/* 求稀疏矩阵 *sMatrixA 和 *sMatrixB 的乘积矩阵 *sMatrixC */ Status MultSMatrix(const TSMatrix *sMatrixA, const TSMatrix *sMatrixB, TSMatrix *sMatrixC) {CHECK_VALUE(!sMatrixA || !sMatrixB || !sMatrixC, ERR_NULL_PTR, sMatrixA %p, sMatrixB %p, sMatrixC %p,sMatrixA, sMatrixB, sMatrixC);CHECK_VALUE((sMatrixA-colNum ! sMatrixB-rowNum), ERR_PARA, sMatrixA_colNum %d, sMatrixB_rowNum %d,sMatrixA-colNum, sMatrixB-rowNum);TSMatrix tempMatrix { 0 };tempMatrix.rowNum sMatrixB-colNum;tempMatrix.colNum sMatrixA-rowNum;tempMatrix.noneZeroNum 0;ElemType *sMatrixARow (ElemType *)malloc(sizeof(ElemType) * (unsigned long long)(sMatrixA-rowNum 1));ElemType *sMatrixBCol (ElemType *)malloc(sizeof(ElemType) * (unsigned long long)(sMatrixB-rowNum 1));CHECK_VALUE(!sMatrixARow || !sMatrixBCol, ERR_MEMORY_ALLOCATE, sMatrixARow %p, sMatrixBCol %p,sMatrixARow, sMatrixBCol);for (int i 1; i sMatrixB-colNum; i) {for (int j 1; j sMatrixA-rowNum; j) {sMatrixARow[j] 0;}for (int j 1; j sMatrixB-rowNum; j) {sMatrixBCol[j] 0;}for (int j 1; j sMatrixB-noneZeroNum; j) {if (sMatrixB-data[j].j i) {sMatrixBCol[sMatrixB-data[j].i] sMatrixB-data[j].e;}}for (int j 1; j sMatrixA-noneZeroNum; j) {sMatrixARow[sMatrixA-data[j].i] sMatrixA-data[j].e * sMatrixBCol[sMatrixA-data[j].j];}for (int j 1; j sMatrixA-rowNum; j) {if (sMatrixARow[j] 0) {continue;}tempMatrix.data[tempMatrix.noneZeroNum].e sMatrixARow[j];tempMatrix.data[tempMatrix.noneZeroNum].i i;tempMatrix.data[tempMatrix.noneZeroNum].j j;}}CHECK_VALUE(tempMatrix.noneZeroNum MAX_SIZE, ERR_PARA, tempMatrix.noneZeroNum %d, tempMatrix.noneZeroNum);Status ret TransposeSMatrix(tempMatrix, sMatrixC);CHECK_RET(ret, NONE);ret DestroySMatrix(tempMatrix);CHECK_RET(ret, NONE);free(sMatrixARow);free(sMatrixBCol);return RET_OK; } 4) main.c #include tripleSparseMatrix.h #include stdio.hint main(void) {TSMatrix sMatrixA, sMatrixB, sMatrixC, sMatrixCT, sMatrixBT;Status ret CreateSMatrix(sMatrixA);printf(sMatrixA:\n\n);ret | PrintSMatrix(sMatrixA);CHECK_RET(ret, NONE);ret CopySMatrix(sMatrixA, sMatrixB);printf(\nsMatrixB:\n\n);ret | PrintSMatrix(sMatrixB);CHECK_RET(ret, NONE);ret AddSMatrix(sMatrixA, sMatrixB, sMatrixC);printf(\nsMatrixC:\n\n);ret | PrintSMatrix(sMatrixC);CHECK_RET(ret, NONE);ret FastTransposeSMatrix(sMatrixC, sMatrixCT);printf(\nsMatrixCT:\n\n);ret | PrintSMatrix(sMatrixCT);CHECK_RET(ret, NONE);ret TransposeSMatrix(sMatrixB, sMatrixBT);ret | MultSMatrix(sMatrixA, sMatrixBT, sMatrixCT);printf(\nsMatrixA * sMatrixBT :\n\n);ret | PrintSMatrix(sMatrixCT);CHECK_RET(ret, NONE);ret | DestroySMatrix(sMatrixA);ret | DestroySMatrix(sMatrixC);ret | DestroySMatrix(sMatrixCT);CHECK_RET(ret, NONE);return 0; } 3. 输出结果
http://www.dnsts.com.cn/news/251426.html

相关文章:

  • 住房和城乡建设部网站监理合同常州网站优化
  • 建立一个网站需要花多少钱网络营销的发展概述
  • 佛山企业如何建网站建筑设计公司是干什么的
  • 公明 网站建设国际品牌的ui设计公司
  • 深圳画册设计网站南昌莱布网络科技有限公司
  • 哪个网站可以付费做淘宝推广seo与网站优化 pdf
  • 一般给公司做网站用什么软件wordpress留言板源码
  • 电商网站建设源代码wordpress热词标签
  • 做网站收费wordpress网站vip可看
  • 往网站添加图片吗网站建设推广代理
  • 企业如何网站建设麻将app软件开发价格
  • 网站怎么做qq微信登陆济南企业网站制
  • 慈溪做网站什么价成都设计公司尹超简历
  • 福建网站建设价格wordpress在线报名
  • 网站建设 营业执照 经营范围建工之家
  • 江苏常州网站建设ps网站首页设计
  • 公司 网站建设名城建设有限公司网站
  • 云建站微网站高端网站建设推来客网络
  • 做网站 有哪些问题仿淘宝电商网站开发报价
  • 长沙网站设计开发阿里云小程序开发
  • 做课件用这15大网站济宁网站建设优化
  • 宁波建网站找哪家有比wordpress更好的吗
  • 泉州网站建设有哪些网站搭建一般要多少钱
  • 关于加强网站建设的意见全球首个完全响应式网站自助建设平台在中国诞生
  • 网站流量分析系统品牌设计公司名称
  • 南宁百度做网站多少钱wordpress批量编辑
  • 网站注册和进入asp建网站麻烦拍照备案审核多久
  • 建设网站设计公司兰州网站优化服务
  • 安徽手机版建站系统网站建设、百度推广
  • 上海网站设计公司wordpress 修改主题名