对称矩阵的压缩存储
对称矩阵:元素以主对角线为对称轴对应相等的矩阵
对称矩阵存储采用上三角、下三角存储,下三角符合i>=j(行大于等于列),我采用的是下三角存储,存储可以存储下三角的元素,但是打印时还需要将其转成对称矩阵形式打印
构造函数:
SymmetricMatrix(T*a,size_tsize):_a(newT[size*(size+1)/2]),_size(size*(size+1)/2),_n(size){intindex=0;for(size_ti=0;i<size;i++){for(size_tj=0;j<size;j++){if(i>=j){_a[index++]=a[i*size+j];}elsebreak;}}}
打印矩阵
voidDisplay(){for(size_ti=0;i<_n;i++){for(size_tj=0;j<_n;j++){if(i>=j){cout<<_a[i*(i+1)/2+j]<<"";}else{cout<<_a[j*(j+1)/2+i]<<"";}}cout<<endl;}cout<<endl;}
元素的访问
T&Access(size_ti,size_tj){if(i<j){swap(i,j);}return_a[i*(i+1)/2+j];}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。