正在加载图片...
第2章数组 (7)实现将两个有序顺序表合并成一个新的有序顺序表的函数如下: Type> SeqList<Type>& SeqList<Type>: Merge( SeqList<Type>& A, SeqList<Type>& B)t ∥合并有序顺序表A与B成为一个新的有序顺序表并由函数返回 if(A Length +B Length Maxs ize i cerr << The summary of The length of Lists is out Maxsize! "< endl; exit(1);) Type valuel =A Fist(, value2 =B Fisrt (; ti=0,j=0,k=0; while(i<Alength()&&j<B length () ∥循环,两两比较,小者存入结果表 data[k]= valuel; valuel =A. Next ( 1++;3 else data[k] = value2; value2 =B Next ( j++;) k+ while(i<A Length()) ∥当A表未检测完,继续向结果表传送 { data[k]= valuel; valuel=A.Next(片;计+;k++; while(j<B Length ()) ∥当B表未检测完,继续向结果表传送 i data[k]= value2; value2 B Next (: j++: k++:) return *this (8)实现从表中删除所有其值重复的元素的函数如下: template<Type> void SeqList<Type>: DelDouble ()t if( last ==-1) i cerr <<"List is empty! "< endl; exit(1):) j, k; Type temp while(i<= last)i ∥循环检测 j=i+1; temp=data[]; ∥对于每一个讠,重复检测一遍后续元素 if( temp ==datad)i ∥如果相等,后续元素前移 for (k=j+; k<=last; k++)data[k-1= data[ k]; ∥表最后元素位置减1 H++ 川检测完data[,检测下一个 2-9设有一个nxn的对称矩阵A,如图(a)所示。为了节约存储,可以只存对角线及对角线以上的元素 或者只存对角线或对角线以下的元素。前者称为上三角矩阵,后者称为下三角矩阵。我们把它们按行 存放于一个一维数组B中,如图(b)和图(c)所示。并称之为对称矩阵A的压缩存储方式。试问 (1)存放对称矩阵A上三角部分或下三角部分的一维数组B有多少元素? (2)若在一维数组B中从0号位置开始存放,则如图(a)所示的对称矩阵中的任一元素a在只存上第 2 章 数组 15 } (7) 实现将两个有序顺序表合并成一个新的有序顺序表的函数如下: template<Type> SeqList<Type>& SeqList<Type> :: Merge ( SeqList<Type>& A, SeqList<Type>& B ) { //合并有序顺序表 A 与 B 成为一个新的有序顺序表并由函数返回 if ( A.Length() + B.Length() > MaxSize ) { cerr << “The summary of The length of Lists is out MaxSize!” << endl; exit(1); } Type value1 = A.Fist ( ), value2 = B.Fisrt ( ); int i = 0, j = 0, k = 0; while ( i < A.length ( ) && j < B.length ( ) ) { //循环, 两两比较, 小者存入结果表 if ( value1 <= value2 ) { data[k] = value1; value1 = A.Next ( ); i++; } else { data[k] = value2; value2 = B.Next ( ); j++; } k++; } while ( i < A.Length ( ) ) //当 A 表未检测完, 继续向结果表传送 { data[k] = value1; value1 = A.Next ( ); i++; k++; } while ( j < B.Length ( ) ) //当 B 表未检测完, 继续向结果表传送 { data[k] = value2; value2 = B.Next ( ); j++; k++; } last = k – 1; return *this; } (8) 实现从表中删除所有其值重复的元素的函数如下: template<Type> void SeqList<Type> :: DelDouble ( ) { if ( last == -1 ) { cerr << “List is empty!” << endl; exit(1); } int i = 0, j, k; Type temp; while ( i <= last ) { //循环检测 j = i + 1; temp = data[i]; while ( j <= last ) { //对于每一个 i, 重复检测一遍后续元素 if ( temp == data[j] ) { //如果相等, 后续元素前移 for ( k = j+1; k <= last; k++ ) data[k-1] = data[k]; last--; //表最后元素位置减 1 } else j++; } i++; //检测完 data[i], 检测下一个 } } 2-9 设有一个 nn 的对称矩阵 A,如图(a)所示。为了节约存储,可以只存对角线及对角线以上的元素, 或者只存对角线或对角线以下的元素。前者称为上三角矩阵,后者称为下三角矩阵。我们把它们按行 存放于一个一维数组 B 中,如图(b)和图(c)所示。并称之为对称矩阵 A 的压缩存储方式。试问: (1) 存放对称矩阵 A 上三角部分或下三角部分的一维数组 B 有多少元素? (2) 若在一维数组 B 中从 0 号位置开始存放,则如图(a)所示的对称矩阵中的任一元素 aij 在只存上
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有