/*
* File Name: static_seq_list.c
*
* Copyright (c) 2022, c code from sustzc.
* All rights reserved.
*/#include"static_seq_list.h"intget_static_seq_list_size(const static_seq_list_t *static_seq_list){int static_seq_list_size =0;if(NULL!= static_seq_list){
static_seq_list_size = static_seq_list->size;}return static_seq_list_size;}boolis_static_seq_list_empty(const static_seq_list_t *static_seq_list){return0==get_static_seq_list_size(static_seq_list);}voidprint_static_seq_list(const static_seq_list_t *static_seq_list){int i =0, size =get_static_seq_list_size(static_seq_list);for(; i < size;++i){printf("[%-3d]", static_seq_list->data[i]);}printf("\n");}voidstatic_seq_list_init(static_seq_list_t *static_seq_list){if(NULL== static_seq_list){return;}
static_seq_list->size =0;memset(static_seq_list->data,0x0,sizeof(static_seq_list_data_t)* MAX_STATIC_LIST_SIZE);}voidpush_front_static_seq_list(static_seq_list_t *static_seq_list,
static_seq_list_data_t data){int i =0, size =get_static_seq_list_size(static_seq_list);if(MAX_STATIC_LIST_SIZE == size){printf("in %s, static_seq_list is full\n",__func__);return;}for(i = size -1; i >=0;--i){
static_seq_list->data[i +1]= static_seq_list->data[i];}
static_seq_list->data[0]= data;++static_seq_list->size;}voidpush_back_static_seq_list(static_seq_list_t *static_seq_list,
static_seq_list_data_t data){int size =get_static_seq_list_size(static_seq_list);if(MAX_STATIC_LIST_SIZE == size){printf("in %s, static_seq_list is full\n",__func__);return;}
static_seq_list->data[size]= data;++static_seq_list->size;}voidinsert_static_seq_list(static_seq_list_t *static_seq_list,int pos,
static_seq_list_data_t data){int i =0, size =get_static_seq_list_size(static_seq_list);if(pos <0|| pos > size){printf("invaild parameter, pos : %d\n", pos);return;}if(MAX_STATIC_LIST_SIZE == size){printf("in %s, static_seq_list is full\n",__func__);return;}for(i = size -1; i >= pos;--i){
static_seq_list->data[i +1]= static_seq_list->data[i];}
static_seq_list->data[pos]= data;++static_seq_list->size;}voidpop_front_static_seq_list(static_seq_list_t *static_seq_list){if(is_static_seq_list_empty(static_seq_list)){return;}int i =0;for(; i < static_seq_list->size -1;++i){
static_seq_list->data[i]= static_seq_list->data[i +1];}--static_seq_list->size;}voidpop_back_static_seq_list(static_seq_list_t *static_seq_list){if(is_static_seq_list_empty(static_seq_list)){return;}--static_seq_list->size;}voiderase_static_seq_list(static_seq_list_t *static_seq_list,int pos){if(is_static_seq_list_empty(static_seq_list)){return;}int i =0, size =get_static_seq_list_size(static_seq_list);if(pos <0|| pos > size){printf("invaild parameter, pos : %d\n", pos);return;}for(i = pos; i < size -1;++i){
static_seq_list->data[i]= static_seq_list->data[i +1];}--static_seq_list->size;}staticintfind_static_seq_list_by_data(const static_seq_list_t *static_seq_list,
static_seq_list_data_t data){int i =0, size =get_static_seq_list_size(static_seq_list);for(; i < size;++i){if(data == static_seq_list->data[i]){return i;}}return-1;}voidremove_static_seq_list_by_data(static_seq_list_t *static_seq_list,
static_seq_list_data_t data){if(is_static_seq_list_empty(static_seq_list)){return;}int pos =find_static_seq_list_by_data(static_seq_list, data);if(-1!= pos){erase_static_seq_list(static_seq_list, pos);}}voidremove_static_seq_list_by_all_data(static_seq_list_t *static_seq_list,
static_seq_list_data_t data){int i =0, size =get_static_seq_list_size(static_seq_list);for(; i < size;++i){remove_static_seq_list_by_data(static_seq_list, data);}}voidclear_static_seq_list(static_seq_list_t *static_seq_list){static_seq_list_init(static_seq_list);}voiddestroy_static_seq_list(static_seq_list_t *static_seq_list){static_seq_list_init(static_seq_list);}
4. test_static_seq_list.c
/*
* File Name: test_static_seq_list.c
*
* Copyright (c) 2022, c code from sustzc.
* All rights reserved.
*/#include"static_seq_list.h"voidtest(){
static_seq_list_t static_seq_list;printf("init static_seq_list\n");static_seq_list_init(&static_seq_list);printf("static seq list size: %d\n",get_static_seq_list_size(&static_seq_list));if(is_static_seq_list_empty(&static_seq_list)){printf("static_seq_list is empty\n");}else{printf("static_seq_list is not empty\n");}print_static_seq_list(&static_seq_list);/* Add data */printf("add data\n");push_front_static_seq_list(&static_seq_list,1);push_front_static_seq_list(&static_seq_list,4);push_front_static_seq_list(&static_seq_list,2);push_back_static_seq_list(&static_seq_list,4);push_back_static_seq_list(&static_seq_list,5);push_back_static_seq_list(&static_seq_list,4);insert_static_seq_list(&static_seq_list,2,6);printf("static seq list size: %d\n",get_static_seq_list_size(&static_seq_list));if(is_static_seq_list_empty(&static_seq_list)){printf("static_seq_list is empty\n");}else{printf("static_seq_list is not empty\n");}print_static_seq_list(&static_seq_list);/* Delete data */printf("delete data\n");printf("pop_front_static_seq_list\n");pop_front_static_seq_list(&static_seq_list);print_static_seq_list(&static_seq_list);printf("pop_back_static_seq_list\n");pop_back_static_seq_list(&static_seq_list);print_static_seq_list(&static_seq_list);printf("erase_static_seq_list, pos = 2\n");erase_static_seq_list(&static_seq_list,2);print_static_seq_list(&static_seq_list);printf("remove_static_seq_list_by_data, data = 6\n");remove_static_seq_list_by_data(&static_seq_list,6);print_static_seq_list(&static_seq_list);printf("remove_static_seq_list_by_all_data, data = 4\n");remove_static_seq_list_by_all_data(&static_seq_list,4);print_static_seq_list(&static_seq_list);printf("clear_static_seq_list\n");clear_static_seq_list(&static_seq_list);printf("static seq list size: %d\n",get_static_seq_list_size(&static_seq_list));if(is_static_seq_list_empty(&static_seq_list)){printf("static_seq_list is empty\n");}else{printf("static_seq_list is not empty\n");}print_static_seq_list(&static_seq_list);printf("destroy_static_seq_list\n");destroy_static_seq_list(&static_seq_list);printf("static seq list size: %d\n",get_static_seq_list_size(&static_seq_list));if(is_static_seq_list_empty(&static_seq_list)){printf("static_seq_list is empty\n");}else{printf("static_seq_list is not empty\n");}print_static_seq_list(&static_seq_list);}intmain(void){test();return0;}