一、思维导图
二、实现顺序表的功能代码
head.h
# ifndef __HEAD_H__
# define __HEAD_H__ # include <stdio.h>
# include <string.h>
# include <stdlib.h>
# define MAXSIZE 5 enum type
{ FALUSE= - 1 , SUCCESS
} ;
typedef int datatype;
typedef struct sqlist
{ datatype data[ MAXSIZE] ; int len;
} * sqlist;
sqlist create_sqlist ( ) ;
int insert_rear ( sqlist list, datatype element) ;
int output ( sqlist list) ;
int delate_rear ( sqlist list) ;
int search_index ( sqlist list, datatype index) ;
int delate_index ( sqlist list, datatype index) ;
int change_index ( sqlist list, int index, int element) ;
int insert_index ( sqlist list, int index, int element) ;
int de_weight ( sqlist list) ;
int sort ( sqlist list) ;
int search_yuansu ( sqlist list, int number) ;
int delate_yuansu ( sqlist list, int number) ;
int change_yuansu ( sqlist list, int number, int element) ; # endif
test.c
# include "head.h"
sqlist create_sqlist ( )
{ sqlist list= ( sqlist) malloc ( sizeof ( struct sqlist ) ) ; if ( NULL == list) { return NULL ; } bzero ( list-> data, sizeof ( list-> data) ) ; list-> len= 0 ; return list;
}
int insert_rear ( sqlist list, datatype element)
{ if ( NULL == list|| list-> len== MAXSIZE) { printf ( "sqlist full..\n" ) ; return FALUSE; } list-> data[ list-> len] = element; list-> len++ ; return SUCCESS;
}
int output ( sqlist list)
{ if ( list== NULL || list-> len== 0 ) { printf ( "output error...\n" ) ; return FALUSE; } for ( int i= 0 ; i< list-> len; i++ ) { printf ( "%d\t" , list-> data[ i] ) ; } putchar ( 10 ) ;
}
int delate_rear ( sqlist list)
{ if ( list== NULL || list-> len== 0 ) { printf ( "delate_rear error..\n" ) ; return FALUSE; } list-> len-- ; return SUCCESS;
}
int search_index ( sqlist list, datatype index)
{ if ( list== NULL || list-> len== 0 || index< 0 || index>= list-> len) { printf ( "search_index error...\n" ) ; return FALUSE; } printf ( "%d\n" , list-> data[ index] ) ; return SUCCESS;
}
int delate_index ( sqlist list, datatype index)
{ if ( list== NULL || list-> len== 0 || index< 0 || index>= list-> len) { printf ( "delate_index error...\n" ) ; return FALUSE; } for ( int i= index; i< list-> len; i++ ) { list-> data[ i] = list-> data[ i+ 1 ] ; } list-> len-- ; return SUCCESS;
}
int change_index ( sqlist list, int index, int element)
{ if ( list== NULL || list-> len== 0 || index< 0 || index>= list-> len) { printf ( "change_index error...\n" ) ; return FALUSE; } list-> data[ index] = element; return SUCCESS;
}
int insert_index ( sqlist list, int index, int element)
{ if ( list== NULL || index< 0 || index> list-> len) { printf ( "insert_index error...\n" ) ; return FALUSE; } if ( list-> len== MAXSIZE) { printf ( "内存已满无法插入\n" ) ; return FALUSE; } list-> len++ ; for ( int i= list-> len; i> index; i-- ) { list-> data[ i- 1 ] = list-> data[ i- 2 ] ; } list-> data[ index] = element; return SUCCESS;
}
int de_weight ( sqlist list)
{ if ( list== NULL || list-> len== 0 ) { printf ( "de_weight error..\n" ) ; return FALUSE; } for ( int i= 0 ; i< list-> len; i++ ) { for ( int j= i+ 1 ; j< list-> len; j++ ) { if ( list-> data[ i] == list-> data[ j] ) { delate_index ( list, j) ; j-- ; } } } return SUCCESS;
}
int sort ( sqlist list)
{ if ( list== NULL || list-> len== 0 ) { printf ( "sort error..\n" ) ; return FALUSE; } for ( int i= 0 ; i< list-> len- 1 ; i++ ) { for ( int j= 0 ; j< list-> len- i- 1 ; j++ ) { if ( list-> data[ j] > list-> data[ j+ 1 ] ) { int temp= list-> data[ j] ; list-> data[ j] = list-> data[ j+ 1 ] ; list-> data[ j+ 1 ] = temp; } } } return SUCCESS;
}
int search_yuansu ( sqlist list, int number)
{ if ( list== NULL || list-> len== 0 ) { printf ( "sort error..\n" ) ; return FALUSE; } for ( int index= 0 ; index< list-> len; index++ ) { if ( list-> data[ index] == number) { return index; } } return FALUSE;
}
int delate_yuansu ( sqlist list, int number)
{ if ( list== NULL || list-> len== 0 ) { printf ( "delate_yuansu error..\n" ) ; return FALUSE; } int index= search_yuansu ( list, number) ; delate_index ( list, index) ; return SUCCESS;
}
int change_yuansu ( sqlist list, int number, int element)
{ if ( list== NULL || list-> len== 0 ) { printf ( "change_yuansu error..\n" ) ; return FALUSE; } int index= search_yuansu ( list, number) ; change_index ( list, index, element) ; return SUCCESS;
}
main.c
# include "head.h"
int main ( int argc, const char * argv[ ] )
{ sqlist list= create_sqlist ( ) ; datatype element; for ( int i= 0 ; i< MAXSIZE; i++ ) { printf ( "请输入一个值:" ) ; scanf ( "%d" , & element) ; insert_rear ( list, element) ; } output ( list) ; delate_rear ( list) ; delate_rear ( list) ; printf ( "尾删之后;" ) ; output ( list) ; int index; printf ( "输入要查找的下标的值:" ) ; scanf ( "%d" , & index) ; search_index ( list, index) ; printf ( "输入要修改的下标:" ) ; scanf ( "%d" , & index) ; printf ( "输入要改成的值:" ) ; scanf ( "%d" , & element) ; change_index ( list, index, element) ; output ( list) ; printf ( "输入要删除值的下标:" ) ; scanf ( "%d" , & index) ; delate_index ( list, index) ; output ( list) ; printf ( "输入要插入值的下标:" ) ; scanf ( "%d" , & index) ; printf ( "输入要插入的值:" ) ; scanf ( "%d" , & element) ; insert_index ( list, index, element) ; de_weight ( list) ; printf ( "去重后的结果:" ) ; output ( list) ; sort ( list) ; printf ( "顺序表排序后的结果:" ) ; output ( list) ; index= search_yuansu ( list, 14 ) ; printf ( "元素查找的下标:" ) ; printf ( "%d\n" , index) ; delate_yuansu ( list, 14 ) ; printf ( "按元素删除后的结果:" ) ; output ( list) ; change_yuansu ( list, 14 , 54 ) ; printf ( "按元素修改后的结果:" ) ; output ( list) ; free ( list) ; list= NULL ; return 0 ;
}