# include  <stdio.h> # include  <stdlib.h> # define  InitSize  10       typedef  int  ElemType;    typedef  struct  {         ElemType * data;      ElemType MaxSize;    ElemType length;     
}  SqList; 
void  PrintList ( SqList L) ; 
void  InitList ( SqList & L)  { L. data =  ( ElemType * )  malloc ( InitSize *  sizeof ( ElemType) ) ; L. MaxSize =  InitSize; L. length =  0 ; 
} 
int  InsertList ( SqList & L,  int  i,  int  e)  { if  ( i <  1  ||  i >  L. length ||  L. length ==  L. MaxSize) return  0 ; for  ( int  j =  L. length;  j >=  i;  j-- )  { L. data[ j]  =  L. data[ j -  1 ] ; } L. data[ i -  1 ]  =  e; L. length++ ; return  1 ; 
} 
int   DeleteList ( SqList & L,  ElemType i,  ElemType & e)  { if  ( i <  0  ||  i >=  L. length) return  0 ; printf ( "删除顺序表第%d个位置数据:%d\n" ,  i,  L. data[ i -  1 ] ) ; for  ( int  j =  i -  1 ;  j <  L. length -  1 ;  j++ )  { L. data[ j]  =  L. data[ j +  1 ] ; } L. length-- ; return  1 ; 
} 
int   AlterList ( SqList & L,  int  i,  int  e)  { if  ( i <  0  ||  i >  L. length -  1 ) return  0 ; L. data[ i -  1 ]  =  e; return  1 ; 
} 
int  GetList ( SqList L,  int  i)  { if  ( i <  0  ||  i >  L. length)  { printf ( "error" ) ; return  0 ; } return  L. data[ i -  1 ] ; 
} 
int   LocatedList ( SqList L,  int  e)  { for  ( int  i =  0 ;  i <  L. length;  i++ )  { if  ( e ==  L. data[ i] ) return  i +  1 ; } return  0 ; 
} 
int  Length ( SqList L)  { return  L. length; 
} bool IsEmpty  ( SqList L)  { if  ( L. length ==  0 ) return  true; return  false; 
} 
void  PrintList ( SqList L)  { for  ( int   i =  0 ;  i <  L. length;  i++ )  { printf ( "data[%d]=%d\n" ,  i,  L. data[ i] ) ; } 
} void  DestoryList ( SqList & L )  { free ( L. data) ; L. length =  0 ; L. MaxSize =  0 ; } 
void  IncreaseSize ( SqList & L,  ElemType len)  { ElemType * p =  L. data; L. data =  ( int  * )  malloc ( ( L. MaxSize +  len)  *  sizeof ( ElemType) ) ; for  ( ElemType i =  0 ;  i <  L. length;  i++ )  { L. data[ i]  =  p[ i] ;    } L. MaxSize +=  len;  free ( p) ;             
} 
int  main ( )  { SqList L;    InitList ( L) ; L. length =  InitSize; for  ( ElemType i =  0 ;  i <  L. MaxSize;  i++ )  {       L. data[ i]  =  i; } int  e; printf ( "删除flag=%d\n" ,  DeleteList ( L,  5 ,  e) ) ; PrintList ( L) ; printf ( "插入flag=%d\n" ,  InsertList ( L,  2 ,  66 ) ) ; PrintList ( L) ; printf ( "修改flag=%d\n" ,  AlterList ( L,  1 ,  88 ) ) ; PrintList ( L) ; printf ( "按位查找%d\n" ,  GetList ( L,  5 ) ) ; printf ( "按值查找%d\n" ,  LocatedList ( L,  88 ) ) ; printf ( "顺序表的表长为%d\n" ,  Length ( L) ) ; printf ( "顺序表是否为空%d\n" ,  IsEmpty ( L) ) ; printf ( "MaxSize ==%d\n" ,  L. MaxSize) ; IncreaseSize ( L,  8 ) ; printf ( "MaxSize ==%d\n" ,  L. MaxSize) ; DestoryList ( L) ; PrintList ( L) ; 
}