顺序表的初始化、插入、删除、获取元素操作
#include <stdio.h>
#define MAXSIZE 20
typedef int ElemType;
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct
{
ElemType data[ MAXSIZE] ;
int length;
} SqList;
Status initList ( SqList * L)
{
L-> length = 0 ;
return OK;
}
int getElem ( SqList L, int i)
{
if ( i< 1 || i> ( L. length) || L. length== 0 )
{
return ERROR;
}
int e = L. data[ i- 1 ] ;
return e;
}
Status ListInsert ( SqList * L, int i, ElemType e)
{
if ( L-> length == MAXSIZE)
{
return ERROR;
}
if ( i< 1 || i> L-> length+ 1 )
{
return ERROR;
}
int k;
if ( i<= L-> length)
{
for ( k= L-> length- 1 ; k>= i- 1 ; k-- )
{
L-> data[ k+ 1 ] = L-> data[ k] ;
}
}
L-> data[ i- 1 ] = e;
L-> length++ ;
return OK;
}
int ListDelete ( SqList * L, int i)
{
int k;
if ( L-> length == 0 || i< 1 || i> L-> length)
{
return ERROR;
}
int e = L-> data[ i- 1 ] ;
if ( i< L-> length)
{
for ( k= i; k< L-> length; k++ )
{
L-> data[ k- 1 ] = L-> data[ k] ;
}
}
L-> length-- ;
return e;
}
int main ( )
{
SqList * L;
L = ( SqList* ) malloc ( sizeof ( SqList) ) ;
initList ( L) ;
int res, i, del;
ListInsert ( L, 1 , 7 ) ;
ListInsert ( L, 2 , 8 ) ;
ListInsert ( L, 3 , 9 ) ;
res = getElem ( * L, 1 ) ;
del = ListDelete ( L, 2 ) ;
printf ( "删除的值:%d\n" , del) ;
printf ( "获取到的第一个位置的值为:%d\n" , res) ;
printf ( "最终数组元素:" ) ;
for ( i= 0 ; i< L-> length; i++ )
{
printf ( "%d " , L-> data[ i] ) ;
}
}