获得一个双字母列表的信件

我正在尝试编写一个程序,在双向链表的每个节点中逐字逐字,然后用我写的函数来检查单词是否是回文。

当我编译我的代码时,我在代码中遇到输入问题,所以我想知道如何做到这一点。

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

这是我写的所有代码:

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

 Llista dadaToList(Dada *node){ Llista ret = { NULL, NULL, 0}; if(!node) return ret; ret.principi = node; ret.nelements = 0; while(node->seguent != NULL){ node = node->seguent; ++ret.nelements; } ret.fin = node; return ret; } int main(void){ char c; Llista list; printf("insertar palabra para comprobar si es palindromo"); while((c=getchar()) != '\n'){ InsertAtTail(c); } list = dadaToList(head);//you need set to `list` from `head` if(palindromo(&list)) printf("palindromo\n"); //deallocation return 0; }