#include <stdio.h>
#include <stdlib.h>

typedef struct No {
    struct No *prox;
    struct No *ant;
    char *dado;
} No;

typedef struct Lista {
    No* head;
    size_t size;
} Lista;


void Remove (Lista* list){
     if (list == NULL || list->head == NULL) return; //se vazia nada a fazer senão sair

     No* NoARemover = list->head; //guarda um ponteiro para o nó que vai ser removido
     list->head = list->head->prox; //faz o head passar a ser o seguinte
     free(NoARemover); //desaloca o antigo head de memoria
     list->size--; //reajusta o size para o valor correto
}

void imprimeLista(Lista *lista){
    if (lista == NULL) return;

    printf("\nA imprimir Lista: ");
    No* head = lista->head;

    while (head != NULL){
        printf("%s ", head->dado);
        head = head->prox;
    }
}

int main(){

    Lista* l = malloc(sizeof(l));
    l->head = malloc(sizeof(No));
    l->head->prox = NULL;
    l->head->ant = NULL;
    l->head->dado = "teste";

    imprimeLista(l);

    Remove(l);

    imprimeLista(l);

    return 0;
}