主要有两种存储方式:
可以定义一个长度为的一维数组来存储
如:下三角i>=j:a[i][j]对应存储在sa[i*(i-1)/2+j-1]
用三元顺序表存储,三元组分别记录非零元素的行、列位置和元素值
#define MAXSIZE 100
typedef struct {
int i,j;//行下标和列下标
ElemType e;
}Triple;
typedef struct{
Triple data[MAXSIZE+1];//data[0]空出来
int mu,nu,tu;//矩阵的行数、列数、非零元素的个数
}TSMatrix;
Status TransposeSMatrix(TSMatrix M,TSMatrix &T){
int col,p,q;
T.mu=M.nu;
T.nu=M.mu;
T.tu=M.tu;
if(T.tu){//T不全为0即非零元素个数不等于0
q=1;
for(col=1;col<=T.mu;col++){
for(p=1;p<=M.tu;p++){
if(M.data[p].j==col){
T.data[q].i=M.data[p].j;
T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e;
q++;
}
}
}
}
return OK;
}
*时间复杂度为:O(M.nu*M.tu)
表头(Head):非空广义表的第一个元素
表尾(Tail):除了表头的其余元素组成的表
深度:广义表中括号嵌套的最大层数
原子:如果ai是单个元素则称为元素,一般用小写字母表示
子表:如果ai是广义表则称为子表,一般用大写字母表示
长度:直观上有几个元素,嵌套之类的也只看做一个元素
typedef enum(ATOM,LIST}ElemTag;
typedef struct GLNode{
ElemTage tag;
union{
AtomType atom;
struct {struct *hp,*tp;}ptr;
}
}*Glist;
1.
2.注意入队时队列为空的情况;出队时仅有一个元素的情况
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务