将元素添加到链接列表C.

时间:2015-03-15 10:23:05

标签: c linked-list

最近我开始在c中开始这个程序,并提出了一个问题。我找不到为什么列表只有1个元素。

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

任何帮助都将不胜感激。

这是我创建列表的函数:

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

1 个答案:

答案 0 :(得分:1)

问题在于:

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