fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct No {
  5. struct No *prox;
  6. struct No *ant;
  7. char *dado;
  8. } No;
  9.  
  10. typedef struct Lista {
  11. No* head;
  12. size_t size;
  13. } Lista;
  14.  
  15.  
  16. void Remove (Lista* list){
  17. if (list == NULL || list->head == NULL) return; //se vazia nada a fazer senão sair
  18.  
  19. No* NoARemover = list->head; //guarda um ponteiro para o nó que vai ser removido
  20. list->head = list->head->prox; //faz o head passar a ser o seguinte
  21. free(NoARemover); //desaloca o antigo head de memoria
  22. list->size--; //reajusta o size para o valor correto
  23. }
  24.  
  25. void imprimeLista(Lista *lista){
  26. if (lista == NULL) return;
  27.  
  28. printf("\nA imprimir Lista: ");
  29. No* head = lista->head;
  30.  
  31. while (head != NULL){
  32. printf("%s ", head->dado);
  33. head = head->prox;
  34. }
  35. }
  36.  
  37. int main(){
  38.  
  39. Lista* l = malloc(sizeof(l));
  40. l->head = malloc(sizeof(No));
  41. l->head->prox = NULL;
  42. l->head->ant = NULL;
  43. l->head->dado = "teste";
  44.  
  45. imprimeLista(l);
  46.  
  47. Remove(l);
  48.  
  49. imprimeLista(l);
  50.  
  51. return 0;
  52. }
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
A imprimir Lista: teste 
A imprimir Lista: