- 3
- 0
- 约3.3千字
- 约 6页
- 2016-10-08 发布于贵州
- 举报
第5章 数组和广义表
5.1 数组的定义
这里的数组与C语言中的传统的数组略有不同。在C中,数组的定义:
int a[10]; //
int n;
scanf(%d,n);
int b[n]; //想随着变量n的值而变化,错误的。
数组的长度在编译时就必须确定下来,而上面的输入到n中,是在运行时才能有结果。
这种方法的缺陷,长度不好把握,所以在数据结构中,一般是使用指针+malloc函数来实现:
int *a;
int m;
scanf(%d,m);
a=(int*)malloc( m*sizeof(int)); //完全正确
5.2 数组的顺序表示和实现
数组一般都采用顺序表示,也就是说,其中的元素都是一个挨一个,他们之间的位置相对固定。因此,可以直接计算出数组中每个元素的地址。其计算方法:
设有一个数组a,其首地址(a[0]的地址)为1000,元素类型为int型(注:此处一个int用2字节),那么a[36]的地址:
Addr36=1000+36*2
也正因为如此,数组的存取可以随机存取(所谓随机存取,就是想存取哪个元素就可直接进行存取)。其使用方法有:
a[36]=-3;
*(a+36)=-3; //速度要比上面的快,上面的在编译后,就是转化为这种方法
对于多维数组,其计算方法也是统一的,以三维为例:
int a[100][200][300]; //100页,每页有200行,每行有300列
其首地址(a[0][0][0]的地址)为1000,则a[23][34][45]的地址:
Addr a[23][34][45]=1000+(23*200*300+34*300+45)*2
5.3 矩阵的压缩存储
5.3.1 矩阵的基本概念
A称为A4×3矩阵,B称为B3×4,在计算机中,可以用二维数组来存储。
int a[4][3]={{1,0,1},{-1,2,3},{0,0,1},{2,1,-1}};
int c[4][4]={{……},……};
方阵:就是行数与列数相等的矩阵。
在方阵中,有几个概念:
1)主对角线、副对角线
主对角线:行数与列数相等的那些元素。
2)如何取到每一个元素?
for( i=0; i4; i++ ) //i管行
for( j=0; j4; j++ ) //j管列
{
c[i][j]=...;
}
3)如何取到主对象线的元素?
方法一:
for( i=0; i4; i++ ) //i管行
for( j=0; j4; j++ ) //j管列
{
if( i==j ) //行与列相等,就是主对角线元素
c[i][j]=...;
}
方法二:
for( i=0; i4; i++ )
c[i][i]=...;
4)上三角、下三角
行号大于或等于列号的是下三角,行号小于或等于列号的是上三角。
5)如何取到上三角元素?
方法一:
for( i=0; i4; i++ )
{
for( j=0; j4; j++ )
{
if( i=j ) //这是上三角,如果取下三角:if( i=j )
c[i][j]=...;
}
}
方法二:
for( i=0; i4; i++ )
{
for( j=i; j4; j++ ) //上三角
c[i][j]=...;
}
for( i=0; i4; i++ )
{
for( j=0; j=i; j++ )
{
c[i][j]=...;
}
}
5.3.2 矩阵的基本运算
1、矩阵的加减:
如果有两个矩阵A3×4,B3×4,构造C3×4,C=A+B
for( i=0; i3; i++ )
{
for( j=0; j4; j++ )
{
c[i][j]=a[i][j]+b[i][j];
}
}
2、转置
今有A4×3,要转置为B3×4,
for( i=0; i4; i++ )
{
for( j=0; j3; j++ )
{
b[j][i]=a[i][j];
}
}
3、乘法:
C=A×B,要求A的列数==B的行数,结果C的行数为A的行数,C的列数为B的列数。如果C=A4×3×B3×4,结果C是4×4
C中的每个元素如C[i][j]元素=A的第i行中的3个元素与B中的第j列的3个元素乘积的和
for( i=0; i4; i++ )
{
for( j=0; j4; j++ )
{
//计算出c[i][j]的值
c[i][j]=0;
for( k=0; k3; k++ )
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
4、如何将一个二维数组放到一个一维数组中进行存取?
int a[4][3];
i
您可能关注的文档
- 材料1:三角函第一轮复习的策略.doc
- 材料科学基础 九章.doc
- 采集数据示例代.doc
- 参考答案第5章组.doc
- 操作系统 三章,第四章,第九章课后习题整理.doc
- 常见药材图片与效.doc
- 常见中药及其功主治.doc
- 常用服装英语翻.doc
- 常用国际贸易术中英文对照.doc
- 常用外贸英语缩.doc
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- Young Sheldon《小谢尔顿》第七季第六集完整中英文对照剧本.docx VIP
- 量化经典高收益量化策略.ppt VIP
- Young Sheldon《小谢尔顿》第七季第五集完整中英文对照剧本.docx VIP
- Young Sheldon《小谢尔顿》第七季第四集完整中英文对照剧本.docx VIP
- Young Sheldon《小谢尔顿》第七季第三集完整中英文对照剧本.docx VIP
- 连锁餐饮企业顾客满意度研究—以广州市点都德为例.doc VIP
- 高中化学必修第二册第六章 化学反应与能量.pdf VIP
- Young Sheldon《小谢尔顿》第七季第二集完整中英文对照剧本.docx VIP
- 合理用药指南.pptx VIP
- Young Sheldon《小谢尔顿》第七季第一集完整中英文对照剧本.docx VIP
原创力文档

文档评论(0)