# include <iostream>
# include <algorithm>
# define InitSize 5 using namespace std;
typedef struct { int data[ InitSize] ; int length_;
} Sqlist_;
typedef struct { int * data; int MaxSize, length;
} SqList; void OutputList ( SqList L) { for ( int i= 0 ; i< L. MaxSize; i++ ) printf ( "%d " , L. data[ i] ) ; printf ( "\n" ) ;
} void InitList ( SqList & L) { L. MaxSize= InitSize; L. length= L. MaxSize- 1 ; L. data= new int [ L. MaxSize] ; fill ( L. data, L. data+ L. MaxSize, - 1 ) ; for ( int i= 0 ; i< L. length; i++ ) L. data[ i] = i;
}
bool ListInsert ( SqList & L, int i, int e) { for ( int j= L. length; j>= i; j-- ) { L. data[ j] = L. data[ j- 1 ] ; } L. data[ i] = e; L. length++ ; return true ;
}
bool ListDelete ( SqList & L, int i) { for ( int j= i; j< L. length- 1 ; j++ ) L. data[ j] = L. data[ j+ 1 ] ; L. length-- ; fill ( L. data+ L. length, L. data+ L. MaxSize, - 1 ) ;
}
int LocateElem ( SqList L, int e) { for ( int i= 0 ; i< L. length; i++ ) if ( L. data[ i] == e) return i; return - 1 ;
} int main ( )
{ SqList L; InitList ( L) ; OutputList ( L) ; ListInsert ( L, 1 , 9 ) ; OutputList ( L) ; ListDelete ( L, 1 ) ; OutputList ( L) ; LocateElem ( L, 1 ) ; printf ( "%d" , LocateElem ( L, 1 ) ) ; return 0 ;
}