- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
05数组与广义表1
殷忧启圣,大难兴邦
第五章 数组和广义表
继续增加线性表结构的内涵。
数组结构 每个子结构是由基本元素组成的大小均等的线性表。 广义表
结构 每个子结构或是基本元素,或是由基本元素组成的大小不等的线性表结构。
第一节 数组的逻辑结构
1_Array=(D, S, P) 定长线性表
D = {ai| ai∈ElemSet, i=0,1,2,…, n-1}
S = {ai-1,ai| ai-1,ai∈D, i=1,2,…,n-1}
2_Array=(D, S, P) 定长线性表,每个元素又是定长线性表。
D = {ai,j| ai,j∈ElemSet, i=0,1,…,n1-1; j=0,1,…,n2-1}
S = {ROW,COL}
ROW={ai,j-1, ai,j| i=0,1,…,n1-1; j=1,…,n2-1}
COL={ai-1,j, ai,j| i=1,…,n1-1; j=0,1,…,n2-1}
3_Array=(D, S, P) 增加层的关系
二维数组:分量为一维数组的一维数组。
三维数组:分量为二维数组的一维数组。
数组一旦被定义,它的维数和维界就不再改变。
基本操作:取值、赋值。
第二节 数组结构的顺序存储结构
数组结构是多维的,内存地址是一维的。
二维数组a[n1][n2]的存储方式:
行主序 a0,0 a0,1 … a0,n2-1 a1,0 … a1,n2-1 … an1-1,n2-2 an1-1,n2-1 列主序 a0,0 a1,0 … an1-1,0 a0,1 … an1-1,1 … an1-2,n2-1 an1-1,n2-1 示例
行主序 列主序 多维数组的存储方式:
行主序 先排最右下标,从右到左; 列主序 先排最左下标,从左向右。 以行主序为例,计算数组元素的地址:
一维: LOC(ai) =base+i
二维(MxN): LOC(ai,j) =base+i*N +j
三维(MxNxP): LOC(ai,j,k) =base+i*N*P +j*P +k
四维(MxNxPxQ):LOC(ai,j,k,l)=base+i*N*P*Q+j*P*Q+k*Q+l
Typedef struct
{ ElemType *base;
int dim; 维数
int *bounds; 各维的维界
int *constants; 各维成员的大小
}Array; 例:数组A[3,4,5,6]的存储结构
A.dim=4
A.bounds[]={3,4,5,6}
A.constants[]={120,30,6,1}
A[i,j,k,l]的地址: A.base+(i*120+j*30+k*6+l)
1、初始化数组结构
Status Array_Init(Array A,int dim,int bounds[])
{ A.dim=dim;
A.bounds=(int *)malloc(dim*sizeof(int));
A.constants=(int *)malloc(dim*sizeof(int));
if(!A.bounds || !A.constants) return(OVERFLOW);
for(i=0;idim;i++) A.bounds[i]=bounds[i];
for(A.constants[dim-1]=1,i=dim-2;i=0;i--)
A.constants[i]=A.bounds[i+1]*A.constants[i+1];
//开辟数组空间
elemtotal=A.bounds[0]*A.constants[0];
A.base=(ElemType *)malloc(elemtotal*sizeof(ElemType));
if(!A.base) return(OVERFLOW);
return(OK);
}
2、取值
ElemType Array_GetValue(Array A,int dim_i[])
{ int offset;
for(offset=0,i=0;iA.dim;i++)
offset+=A.constants[i]* dim_i[i];
return(*(A.base+offset));
}
第三节 矩阵的压缩存储
矩阵的用途:
大型方程组求解、高次方程求解
真正有用的计算是矩阵的计算。
从空间/时间复杂度出发,讨论矩阵的存储结构。
一、特殊矩阵
利用矩阵的特征,尽量减少数据的存储量。
1、对称矩阵 aij=aji
您可能关注的文档
- --详解散热原理与发展渊源 热管散热技术介绍.doc
- -1人常常觉得生命里有那麼多遗憾.doc
- -二尬尴境异与力魅-制问询叉交.doc
- -六构重之制机决解纷纠.doc
- -实验0009-静态路由-.doc
- -文化人类学期末复习的资料.doc
- -文化人类学理论流派.doc
- -文化传播4.doc
- -文化名镇海阳所.doc
- -文化常识100题与的的答案.doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)