向链表中添加元素 C

Adding elements to a linked list C

最近我开始用 c 编写这个程序并遇到了一个问题。我找不到为什么列表只有 1 个元素。

我正在创建一个列表,以便链表的所有部分都是 "problem" 数组的字母,并且不会有任何重复项。

如有任何帮助,我们将不胜感激。

这是我创建列表的函数:

void createAlphabet(ALPHABET **head, char *problem, int *error){
ALPHABET *current=NULL;
int length = strlen(problem);
int i;
for (i=0;i<length;i++){
    if(isalpha(problem[i])){
        if(current==NULL){
            current=(ALPHABET*)malloc(sizeof(ALPHABET));
            current->next=NULL;
            current->letter=problem[i];
            (*head)=current;
        }
        else{
            current=(*head);
            while(problem[i]!=current->letter && current->next!=NULL){
                current=current->next;
            }
            if(problem[i]!=current->letter){
                current=current->next;
                current=(ALPHABET*)malloc(sizeof(ALPHABET));
                current->next=NULL;
                current->letter=problem[i];
            }
        }
    }
}

问题出在:

if(problem[i]!=current->letter){
            current=current->next;
            current=(ALPHABET*)malloc(sizeof(ALPHABET));
            current->next=NULL;
            current->letter=problem[i];
        }

current=whatever;current=(ALPHABET*)malloc(sizeof(ALPHABET)); 中,malloc() 修改 current 但不会更改 whatever.

尝试:

 if(problem[i]!=current->letter){

            current->next=malloc(sizeof(ALPHABET));
            if(current->next==NULL){printf("malloc failed\n");exit(1);}
            current=current->next;
            current->next=NULL;
            current->letter=problem[i];
        }