顺序查找
# include <stdlib.h>
# include <stdio.h>
typedef struct list {
int * data;
int length;
int num;
} list;
list* init ( int length) {
list* L = ( list* ) malloc ( sizeof ( list) ) ;
L-> length = length;
L-> data= ( int * ) malloc ( sizeof ( int ) * length) ;
L-> num = 0 ;
return L;
}
void add ( list* L, int data) {
L-> data[ ( L-> num) ++ ] = data;
}
int ss ( list* L, int yuansu) {
for ( int i = 0 ; i < L-> num; i++ )
if ( L-> data[ i] == yuansu) return 1 ;
return 0 ;
}
void shuchu ( list* L) {
for ( int i = 0 ; i < L-> num; i++ )
printf ( "%d->" , L-> data[ i] ) ;
printf ( "NULL\n" ) ;
}
int main ( ) {
int i = 0 ;
list* L = init ( 5 ) ;
add ( L, 1 ) ;
add ( L, 2 ) ;
add ( L, 3 ) ;
add ( L, 4 ) ;
add ( L, 5 ) ;
shuchu ( L) ;
printf ( "输入查找的数字:" ) ;
scanf_s ( "%d" , & i) ;
ss ( L, i) ? printf ( "此数存在" ) : printf ( "此数不存在" ) ;
}
具有哨兵的顺序查找
# include <stdlib.h>
# include <stdio.h>
typedef struct list {
int * data;
int length;
int num;
} list;
list* init ( int length) {
list* L = ( list* ) malloc ( sizeof ( list) ) ;
L-> length = length;
L-> data= ( int * ) malloc ( sizeof ( int ) * length) ;
L-> num = 1 ;
return L;
}
void add ( list* L, int data) {
L-> data[ ( L-> num) ++ ] = data;
}
void shuchu ( list* L) {
for ( int i = 0 ; i < L-> num; i++ )
printf ( "%d->" , L-> data[ i] ) ;
printf ( "NULL\n" ) ;
}
int ss ( list* L, int yuansu) {
int i = 0 ;
L-> data[ 0 ] = yuansu;
shuchu ( L) ;
for ( i = L-> num- 1 ; L-> data[ i] != yuansu; i-- ) ;
return i;
}
int main ( ) {
int i = 0 ;
list* L = init ( 5 ) ;
add ( L, 0 ) ;
add ( L, 1 ) ;
add ( L, 2 ) ;
add ( L, 3 ) ;
add ( L, 4 ) ;
shuchu ( L) ;
while ( 1 ) {
printf ( "输入查找的数字:" ) ;
scanf_s ( "%d" , & i) ;
ss ( L, i) ? printf ( "此数存在\n" ) : printf ( "此数不存在\n" ) ;
}
}