01 :删最小元素,返回最小元素值,把最后一个元素补到最小元素的位置
int 01 ( Sqlist L ) {
int i,j,e;
int temp;
temp = L.data[0];
for ( i=1;i < L.length ; i++ ) {
if ( temp > L.data[i] ){
temp = L.data[i];
}
for ( i = 0 ;i < L.length ; i++ ) {
if ( temp == L.data[i] ) j = i ;
}
e = L.data[j];
L.data[j] = L.data[L.length - 1];
L.length - - ;
}
return 0 ;
}
02 设计一个O(1)的算法将顺序表逆置
03 编写时间复杂度O(n),空间复杂度O(1)的删特值元素的算法
int 03 (Sqlist L , int x ) {
int i,j,e;
for ( i = 0 ; i < L.length ; i++ ){
if ( L.data[i[== x ) {
e = L.data[i];
for( j = i ;j < L.length ; j++ ){
L.data[j] = L.daat[j + 1];
}
l.length--;
}
}
return 0 ;
}
04 删除有序顺序表中值 s 到 t 之间的元素,若 s , t 不合理,或顺序表为空,则输出ERROR;
int 04 ( Sqlist L , int s , int t) {
int i ,j , k , e ;
if ( s > t && L.length ==0 ) printf ( "ERROR !!!" ) ;
else {
for ( i = 0 ; i < L.length ; i++ ) {
if ( L.data[i] > s && L.data[i] < t ) {
e = L.data[i];
for ( j = i ; j < L.length ; j++ ) L.data[j] = L.data[j + 1];
L.length -- ;
}
}
return 0 ;
}
05 在 04 的条件下包含 s 和 t ;
int 05 ( Sqlist L , int s , int t) {
int i ,j , k , e ;
if ( s > t && L.length ==0 ) printf ( "ERROR !!!" ) ;
else {
for ( i = 0 ; i < L.length ; i++ ) {
if ( L.data[i] > = s && L.data[i] < = t ) {
e = L.data[i];
for ( j = i ; j < L.length ; j++ ) L.data[j] = L.data[j + 1];
L.length -- ;
}
}
return 0 ;
}
06 在有序顺序表中删除所有重复的值,使得表中元素都不同
void 06 ( Sqlist L ){
int i , j , e ;
for ( i = 0 ; i < L.length ; i++ ) {
if ( L.data[i+1] == L.data[i] ) {
e = L.data[i+1] ;
for ( j = i+1 ; j < L.length ; j++ ){
L.data[j] = L.data[j+1] ;
}
L.length -- ;
}
}
}
07 两个有序顺序表合成一个有序顺序表;
int 07 (Sqlist L , Sqlist Q) {
int i , j = 0 , k = 0 ;
Sqlist M ;
while ( M.Length == L.length + Q.length ) {
for ( i = 0 ; i < L.length + Q.length ; i ++) {
if ( L.data[j] < Q.data[k] ){
M.data[i] = L.data[j] ;
M.Length ++ ;
i ++ ; j ++ ;
}else {
M.data[i] = Q.data[k] ;
M.Length ++;
i ++ ; k ++ ;
}
}
}
return M ;
}