Obter carta por carta para uma lista duplamente vinculada

Estou tentando escrever um programa que pega uma palavra letra por letra em todos os nós de uma lista duplamente vinculada e, em seguida, com uma função que escrevi, verificará se a palavra é um palíndromo.

Ao compilar meu código, estou tendo problemas na parte do código que recebe a entrada, então gostaria de saber como posso fazê-lo.

int main(){
  char c;
  Llista * list;
  Dada head = {0, NULL, NULL};
  printf("insertar palabra para comprobar si es palindromo");
  while((c=getchar()) != '\n'){
    InsertAtTail(c);
  }

  palindromo(list);

  return 0;
}

Este é todo o código que escrevi:

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

typedef struct dada{

char c;
struct dada *seguent;
struct dada *anterior;

}Dada;


typedef struct lista{

Dada *principi;
Dada *fin;
unsigned nelements;

}Llista;

int palindromo(Llista * lista);
struct dada* GetNewNode(char x);
void InsertAtTail(char x);
struct dada* head;

int main(){
  char c;
  Llista * list;
  Dada head = {0, NULL, NULL};
  printf("insertar palabra para comprobar si es palindromo");
  while((c=getchar()) != '\n'){
    InsertAtTail(c);
  }

  palindromo(list);

  return 0;
}

void InsertAtTail(char x) {
    struct dada* temp = head;
    struct dada* newNode = GetNewNode(x);
    if(head == NULL) {
        head = newNode;
        return;
    }
    while(temp->seguent != NULL) temp = temp->seguent;
    temp->seguent = newNode;
    newNode->anterior = temp;
}


struct dada* GetNewNode(char x) {
    struct dada* newNode
        = (struct dada*)malloc(sizeof(struct dada));
    newNode->c = x;
    newNode->seguent = NULL;
    newNode->anterior = NULL;
    return newNode;
}

int palindromo(Llista * lista){
   int palindromo = 0;
   int descartado = 0;
   Dada *aux = lista->principi;
   Dada *aux2 = lista->fin;

   while(aux->seguent != aux2->anterior && descartado==0){
    if(aux->c != aux2->c){
        descartado = 1;
    }
    else{
       aux = aux->seguent;
       aux2 = aux2->anterior;
    }
   }
   if(descartado==1){
    palindromo=0;
   }
   else{
    palindromo=1;
   }
   return palindromo;
}