template <class Type> void Array<Type>:: Resize( int sz)( if( sz >=0 & sz != ArraySize ) i Type newarray -new Type[sz; ∥创建新数组 if newarray== NULL)( cerr<<“存储分配错"<<endl; return intn=( SZ<=ArraySIze)?7. Arraysize ∥/按新的大小确定传送元素个数
template <class Type> void Array<Type> :: Resize ( int sz ) { if ( sz >= 0 && sz != ArraySize ) { Type * newarray = new Type[sz]; //创建新数组 if ( newarray == NULL ) { cerr << “存储分配错” << endl; return; } int n = ( sz <= ArraySize ) ? sz : ArraySize; //按新的大小确定传送元素个数
ype* srcptr= elements;∥)原数组指针 Iype* destptr= newarray;∥标数组指针 while( n--)*destptr++=* srcptr++; /从源数组向目标数组传送 delete l elements; elements- newarray, arraysize =sz
Type *srcptr = elements; //源数组指针 Type *destptr = newarray; //目标数组指针 while ( n-- ) * destptr++ = * srcptr++; //从源数组向目标数组传送 delete [ ] elements; elements = newarray; ArraySize = sz; } }
多维数组 多维数组是一维数组的推广 多维数组是一种非线性结构。其特 点是每一个数据元素可以有多个直 接前驱和多个直接后继。 n数组元素的下标一般具有固定的下 界和上界,因此它比其他复杂的非 线性结构简单
多维数组 ◼ 多维数组是一维数组的推广 ◼ 多维数组是一种非线性结构。其特 点是每一个数据元素可以有多个直 接前驱和多个直接后继。 ◼ 数组元素的下标一般具有固定的下 界和上界,因此它比其他复杂的非 线性结构简单
二维数组 三维数组 m1=5m2=4ma=6 m3 a[2][2 m 3×4×6 2×6 m2 m 1 m a[3][22] 行向量下标i 页向量下标i 列向量下标j 行向量下标j 列向量下标k
二维数组 三维数组 行向量 下标 i 页向量 下标 i 列向量 下标 j 行向量 下标 j 列向量 下标 k
数组的连续存储方式 一维数组 LOC(O LOC(i-1+=a+iL,i>0 0123456789 35274918605477834102 +i“l LOC(=LOC(i-1)+l=a+i*l
数组的连续存储方式 ◼ 一维数组 35 27 49 18 60 54 77 83 41 02 0 1 2 3 4 5 6 7 8 9 l l l l l l l l l l LOC(i) = LOC(i-1)+l = a+i*l LOC(i) = LOC(i-1)+l = a+i*l, i > 0 a, i = 0 a+i*l a