正在加载图片...
第2章数组 (3)实现向第i个位置插入一个新的元素x的函数如下(设第i个元素在data[],i=0,1,…,1ast) template<Type> void Seqlist<Type>: InsNo#i( int i, Type& x)t if( last== MaxSize-1lI ∥表满或参数i不合理,中止操作返回 i cerr <<"List is Full or Parameter is out range! < endl; exit(1):) or( int j= last;j>=i;j- ∥空出位置以便插入,若=last+1,此循环不做 data[+1=datad: data[0=x ∥插入 last++ ∥表最后元素位置加 (4)从顺序表中删除具有给定值x的所有元素。 template<Type> void Seqlist<Type>: Del Value Type&x)i while(i<= last ∥循盾环,寻找具有值x的元素并删除它 删除具有值x的元素,后续元素前移 for(j=i;j<last: j++)datan =data[+1]: ∥表最后元素位置减1 (5)实现删除其值在给定值s与t之间(要求s小于t)的所有元素的函数如下: template<Type> void SeqList<Type>: DeINoffstot Type& S, Type& t)i if last i cerr <<"List is empty or parameters are illegal! < endl: exit(1); while(i<= last 循环,寻找具有值x的元素并删除它 f(da≥s&&daa<t){ 删除满足条件的元素,后续元素前移 for(j=1;j<last; j++)data= data+1 ∥表最后元素位置减1 (6)实现从有序顺序表中删除其值在给定值s与t之间的所有元素的函数如下: template<Type> void SeqList<Type>: DelNotfstotftI ( Type& s, Type& t)t if last i cerr <<" List is empty or parameters are illegal!<< endl; exit(1); for( int i=0; i<=last; i++) ∥循环,寻找值≥s的第一个元素 if( data[0 >=s)break ∥退出循环时,i指向该元素 if (i<=last)i for(intj=1; i+j<=last; j++) ∥循盾环,寻找值>t的第一个元素 if( data[i+j>t)break ∥退出循环时,计指向该元素 for( int k=itj; k <= last; k++) 删除满足条件的元素,后续元素前移 data(k-j= data[ k]; last-= ∥表最后元素位置减j第 2 章 数组 14 (3) 实现向第 i 个位置插入一个新的元素 x 的函数如下(设第 i 个元素在 data[i], i=0,1,,last): template<Type> void SeqList<Type> :: InsNo#i ( int i, Type& x ) { if ( last == MaxSize-1|| i < 0 || i > last+1 ) //表满或参数 i 不合理, 中止操作返回 { cerr << “ List is Full or Parameter is out range! ” << endl; exit(1); } for ( int j = last; j >= i; j-- ) //空出位置以便插入, 若 i=last+1, 此循环不做 data[j+1] = data[j]; data[i] = x; //插入 last++; //表最后元素位置加 1 } (4) 从顺序表中删除具有给定值 x 的所有元素。 template<Type> void SeqList<Type> :: DelValue ( Type& x ) { int i = 0, j; while ( i <= last ) //循环, 寻找具有值 x 的元素并删除它 if ( data[i] == x ) { //删除具有值 x 的元素, 后续元素前移 for ( j = i; j < last; j++ ) data[j] = data[j+1]; last--; //表最后元素位置减 1 } else i++; } (5) 实现删除其值在给定值 s 与 t 之间(要求 s 小于 t)的所有元素的函数如下: template<Type> void SeqList<Type> :: DelNo#sto#t ( Type& s, Type& t ) { if ( last == -1 || s >= t ) { cerr << “List is empty or parameters are illegal!” << endl; exit(1); } int i = 0, j; while ( i <= last ) //循环, 寻找具有值 x 的元素并删除它 if ( data[i] >= s && data[i] <= t ) { //删除满足条件的元素, 后续元素前移 for ( j = i; j < last; j++ ) data[j] = data[j+1]; last--; //表最后元素位置减 1 } else i++; } (6) 实现从有序顺序表中删除其值在给定值 s 与 t 之间的所有元素的函数如下: template<Type> void SeqList<Type> :: DelNo#sto#t1 ( Type& s, Type& t ) { if ( last == -1 || s >= t ) { cerr << “List is empty or parameters are illegal!” << endl; exit(1); } for ( int i = 0; i <= last; i++ ) //循环, 寻找值 ≥s 的第一个元素 if ( data[i] >= s ) break; //退出循环时, i 指向该元素 if ( i <= last ) { for ( int j = 1; i + j <= last; j++ ) //循环, 寻找值 > t 的第一个元素 if ( data[i+j] > t ) break; //退出循环时, i+j 指向该元素 for ( int k = i+j; k <= last; k++ ) //删除满足条件的元素, 后续元素前移 data[k-j] = data[k]; last-= j; //表最后元素位置减 j }
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有