Erhalte Buchstabe für Buchstabe eine doppelt verknüpfte Liste

Ich versuche ein Programm zu schreiben, das ein Wort Buchstabe für Buchstabe in jeden Knoten einer doppelt verknüpften Liste schreibt und dann mit einer von mir geschriebenen Funktion prüft, ob das Wort ein Palindrom ist.

Wenn ich meinen Code kompiliere, habe ich Probleme mit dem Teil des Codes, der für die Eingabe verwendet wird. Daher möchte ich wissen, wie ich das tun kann.

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;
}

Dies ist der gesamte Code, den ich geschrieben habe:

#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;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage