数据结构之数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数据结构之数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2058字,纯文字阅读大概需要3分钟。
内容图文
数组本身就是一种数据结构,他是对线性表的一种扩充数组主要用于对矩阵的压缩和表示
一.特殊矩阵的压缩
二.稀疏矩阵的压缩
1.三元组表示法:
#include<stdio.h> #define MAXSIZE 1000 typedef int ElemType; //定义一种结构体记录每个压缩后的非零点在原矩阵中的行下标和列下标,以及数据 typedef struct Node{ int row,col; ElemType data; }Triple; //定义一种结构体:新的压缩矩阵,包含所有原矩阵非零点的数组, //原矩阵的行数,列数,新压缩矩阵非零点的个数 typedef struct YS{ Triple data[MAXSIZE+1];//data[0]抛弃不用 int m,n,len; }TSMatrix;
三元组表示法下的稀疏矩阵转置
#include<stdio.h> #define MAXSIZE 1000 typedef int ElemType; //定义一种结构体记录每个压缩后的非零点在原矩阵中的行下标和列下标,以及数据 typedef struct Node{ int row,col; ElemType data; }Triple; //定义一种结构体:新的压缩矩阵,包含所有原矩阵非零点的数组, //原矩阵的行数,列数,新压缩矩阵非零点的个数 typedef struct YS{ Triple data[MAXSIZE+1];//data[0]抛弃不用 int m,n,len; }TSMatrix; //矩阵转置 :列序递增转置法 void TransposTSMatrix(TSMatrix A,TSMatrix B) { int i,j=1,k; if(B.len>0) { for(k=1;k<A.n;k++) for(i=1;i<A.len;i++) if(A.data[i].col==k) { B.data[j].row=A.data[i].col; B.data[j].col=A.data[i].row; B.data[j].data=A.data[i].data; j++; } } } //一次定位快速转置法 void FastTransportTSMatrix(TSMatrix* A,TSMatrix* B) { int col,t,p,q; int num[MAXSIZE],postion[MAXSIZE];//num[i]记载A中第i列中非零元素个数, //postion[i]中记载A中第i列中下一个非零元素在三元组表B中的正确存放位置 B->len=A->len; B->n=A->m; B->m=A->n; if(B->len) { //初始化每列中的非零元素个数为0 for(col=1;col<=A->len;i++) num[col]=0; //计算出A每列中非零元素的个数 for(t=1;t<=A->len;t++) num[A->data[t]->col]++; //第一列中第一个非零元素在B中的位置 potion[1]=1; //计算出每列中第一个非零元素在三元组表B中的正确存放位置 for(col=2;col<=A->n;col++) postion[col]=postion[col-1]+num[col-1]; //依次将A中每一个元素按照列序转置 for(p=1;p<=A->len;p++) { col=A->data[p]->col;q=postion[col]; B->data[q]->col=A->data[p]->row; B->data[q]->row=A->data[p]->col; B->data[q]->data=A->data[p]->data; postion[col]++; } } }
二.稀疏矩阵的链式存储结构:十字链表
建立十字链表
#include<stdio.h> typedef ElemType int; typedef struct OLNode { int row,col; ElemType value; struct OLNode* right,*down; }OLNode,*OLink; typedef struct TS { //行链表,列链表的头指针向量 OLink row_head,col_head; int m,n,len;//稀疏矩阵的行数,列数,非零元素的个数 }CrossList;
原文:http://www.cnblogs.com/YTYMblog/p/5414715.html
内容总结
以上是互联网集市为您收集整理的数据结构之数组全部内容,希望文章能够帮你解决数据结构之数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。