通过c语言实现线性表的建立、初始化、指定位置添加、指定位置删除、查找、获取长度、打印输出。
#include <stdio.h>
#include <stdlib.h>
constexpr auto MAX = 100 ;
typedef struct List
{
char data[ MAX] ;
int last;
} list;
void newList ( list * l)
{
l-> last = - 1 ;
}
void setList ( list * l)
{
char a;
int i = 1 ;
printf ( "请输入数据!\n" ) ;
while ( i)
{
a = getchar ( ) ;
if ( a == '$' )
{
i = 0 ;
}
else
{
l-> data[ l-> last + 1 ] = a;
l-> last++ ;
}
}
}
void longList ( list * l)
{
printf ( "该线性表的长度为:%d\n" , l-> last + 1 ) ;
}
void printfList ( list * l)
{
printf ( "该线性表的内容是:\n" ) ;
for ( int i = 0 ; i <= l-> last; i++ )
{
printf ( "%c\t" , l-> data[ i] ) ;
}
printf ( "\n" ) ;
}
void add ( list * l, char s)
{
l-> data[ l-> last] = s;
l-> last++ ;
}
void findList ( list * l, char s)
{
int i;
for ( i = 0 ; i <= l-> last; i++ )
{
if ( l-> data[ i] == s)
{
printf ( "找到该数据,在顺序表中的下标为:%d\n" , i) ;
break ;
}
}
if ( i > l-> last)
{
printf ( "顺序表中不存在该数据!\n" ) ;
}
}
void deleteList ( list * l, int i)
{
if ( i > 0 && i <= l-> last)
{
for ( int j = i; j < l-> last; j++ )
{
l-> data[ j] = l-> data[ j + 1 ] ;
}
l-> last-- ;
}
else
{
printf ( "删除位置不合法!\n" ) ;
}
}
void addList ( list * l, int i, char s)
{
if ( i > 0 && l-> last + 1 <= MAX)
{
for ( int j = ( l-> last+ 1 ) ; j > i; j-- )
{
l-> data[ j] = l-> data[ j - 1 ] ;
}
l-> data[ i] = s;
l-> last= l-> last+ 1 ;
}
else
{
printf ( "插入位置不合法!\n" ) ;
}
}
int main ( )
{
list l;
list * l1 = & l;
newList ( l1) ;
setList ( l1) ;
longList ( l1) ;
printfList ( l1) ;
deleteList ( l1, 2 ) ;
printfList ( l1) ;
addList ( l1, 1 , 's' ) ;
longList ( l1) ;
printfList ( l1) ;
findList ( l1, 'a' ) ;
system ( "pause" ) ;
return 0 ;
}