第五章数组 一维数组 n多维数组 特殊矩阵的压缩存储
◼ 一维数组 ◼ 多维数组 ◼ 特殊矩阵的压缩存储
维数组 定义 相同类型的数据元素的集合。 一维数组的示例 0123456789 35274918605477834102 与顺序表的不同在于数组可以按元 素的下标直接存储和访问数组元素
一维数组 ◼ 定义 相同类型的数据元素的集合。 ◼ 一维数组的示例 ◼ 与顺序表的不同在于数组可以按元 素的下标直接存储和访问数组元素。 35 27 49 18 60 54 77 83 41 02 0 1 2 3 4 5 6 7 8 9
数组的定义和初始化 main(i int al[3]={3,5,7},*elem; for(inti=0;1<3;1++) printf(d3,alij,n”);/静态数组 elem =al; ior(inti=0;1<3;i++){ printf(%d, elem,n);1动态数组 elem++
数组的定义和初始化 main ( ) { int a1[3] = { 3, 5, 7 }, *elem; for ( int i = 0; i < 3; i++ ) printf ( “%d”, a1[i], “\n” ); //静态数组 elem = a1; for ( int i = 0; i < 3; i++ ) { printf ( “%d”, *elem, “\n” ); //动态数组 elem++; } }
数组溢出的处理 维数组的问题在于:如果其空间大小已 经分配,一旦空间占满,再加入新元素将 产生溢出。 已知一维数组的大小为 MaxSize,其定义 和分配如下: typedef int data Type; DataType s data= Data Type *)malloc MaxSize sizeof Data Type )) a现已产生溢出,那么处理溢出的方法为
数组溢出的处理 ◼ 一维数组的问题在于:如果其空间大小已 经分配,一旦空间占满,再加入新元素将 产生溢出。 ◼ 已知一维数组的大小为MaxSize,其定义 和分配如下: typedef int dataType; DataType * data = (DataType *) malloc ( MaxSize * sizeof ( DataType ) ); ◼ 现已产生溢出,那么处理溢出的方法为:
const int Newsize =100. Data Type newArray new Data Type NewSize; if( newArray - NULL) { stderr(“存储分配错Ⅷn”);exit(1);} int n=( NewSize < MaxSize)? NewSize: MaxSize Data Type *srcptr=data; Data Type *destptr=newArray; while(n--*destptr++=* srcptr++ delete data; data=newArrays
const int NewSize = 100; DataType * newArray = new DataType[NewSize]; if ( newArray == NULL ) { stderr (“存储分配错\n” ); exit(1); } int n = ( NewSize <= MaxSize ) ? NewSize : MaxSize; DataType *srcptr = data; DataType *destptr = newArray; while ( n-- ) * destptr++ = * srcptr++; delete [ ] data; data = newArray;