线性表结构是数组结构的一个特例,而数组结构又是线性表结构的扩展。
数组特点:结构固定—定义后,维数和维界不再改变
数组的基本操作:除了结构的初始化和销毁之外,只有取元素和修改元素值的操作,一般不做插入和删除操作。一般采用顺序存储结构来表示数组。
1.InitArray(&A,n,bound1,…,boundn) //构造数组A
2.DestroyArray(&A) //销毁数组A
3.Value(A,&e,index1,…,indexn) //取数组元素值
4.Assign(A,&e,index1,…,indexn) //给数组元素赋值
两种顺序存储方式:1.以行序为主序(c、java用这种方式);2.以列序为主序
行序优先表示中m行n列的二维数组a[m][n],第i行第j列的元素的存储位置为(i*n+j)*sizeof(a)+a[0][0]
页优先的顺序存储的三维数组b[m1][m2][m3],那么b[i1][i2][i3]元素的存储位置是
(i1*m2*m3+i2*m3+i3)*sizeof(b)+b[0][0][0]
一.数组的顺序存储表示(结构固定,不需要链式存储结构)
#include<stdarg.h>//标准头文件,提供宏va_start,va_arg和va_end,用于存取变长参数表
#define MAX_ARRAY_DIM 8 //假设数组位数的最大值为8
struct Array
{
ElemType *base; //数组元素基址,由InitArray分配
int dim;//数组维数
int *bounds;//数组维界基址,由InitArray分配
int *constants;//数组映象函数常量基址,由InitArray分配
};