- void remover(struct _lista *lista, int pos){
- pos--;
- int atualPos = 0;
- while(lista->prev != NULL){
- lista = lista->prev;
- }
- while(atualPos++ != pos && lista != NULL ){
- lista = lista->prox;
- }
- if(lista == NULL){
- printf("Naum ha elemento a remover\n");
- return;
- }
- //Não é o último
- if(lista->prox){
- //Não é o primeiro elemento
- if(lista->prev){
- lista->prev->prox = lista->prox;
- lista->prox->prev = lista->prev;
- }
- //Primeiro elemento
- else{
- printf("%p\n", lista);
- lista = lista->prox;
- printf("%p\n", lista);
- lista->prev = NULL;
- }
- }
- //Último elemento
- else if(lista->prev){
- lista = lista->prev;
- lista->prox = NULL;
- }
- else{
- printf("este eh o elemento unico da lista...");
- }
- }
