/*------------------------------------------------------------------------------------------------------------ delete_list() Funcao que utiliza a funcao remove_end para deletar todos os nos da lista menos a sentinela, depois deleta a sentinela, libera a memoria alocada pela lista e faz com que o ponteiro aponte para NULL, o que indica lista nao criada - Parametros LIST** : endereco da lista a ser apagada - Retorno void */ void delete_list(LIST **list){ if(list != NULL && (*list) != NULL){ // Enquanto n houver so a sentinela(list->size == 0), remove do fim while((*list)->size > 0) remove_end(*list); delete_node( &((*list)->sentry) ); free(*list); (*list) = NULL; } }
/*------------------------------------------------------------------------------------------------------------ get_list() Funcao que cria uma lista usando create_list() e le inteiros da stream de dados ate o fim do arquivo, inserindo nos no final da lista com ids iguais aos inteiros lidos. Caso haja erro na criacao, retorna NULL - Parametros FILE* : stream de dados a ser lida - Retorno LIST* : lista criada */ LIST *get_list(FILE *stream){ LIST *list = create_list(); if(list != NULL){ int aux; while(fscanf(stream, "%d", &aux) != EOF){ insert_end(list, aux); } // Precaucao if(list->last == NULL){ remove_end(list); } } return list; }
int main(void) { //struct list_node *list,*list2; struct list_node *list; list=NULL; print(list); printf("1\n"); add_beg(&list,1); print(list); remove_beg(&list); print(list); printf("2\n"); add_end(&list,1); print(list); remove_beg(&list); print(list); printf("3\n"); add_beg(&list,1); print(list); remove_beg(&list); //remove_end(&list); print(list); printf("4\n"); add_end(&list,1); print(list); remove_beg(&list); //remove_end(&list); print(list); printf("5\n"); add_beg(&list,1); print(list); add_beg(&list,2); print(list); remove_beg(&list); print(list); remove_beg(&list); print(list); printf("6\n"); add_end(&list,1); print(list); add_end(&list,3); print(list); add_beg(&list,1); print(list); remove_beg(&list); print(list); remove_end(&list); print(list); add_end(&list,3); print(list); remove_end(&list); print(list); add_end(&list,3); print(list); remove_beg(&list); print(list); remove_end(&list); print(list); remove_end(&list); print(list); remove_beg(&list); print(list); return 0; }