Сохранить отдельные слова в связанный список

В основном у меня есть 2 связанных списка здесь: список и отчетливый. Существует несколько наборов слов, которые были ранее сохранены в «списке». структура. Я собирался написать программу, которая найдет слова, которые являются уникальными / уникальными, и сохранит их в «отличные» слова. структура. Вот что я получил до сих пор, основываясь на моей концепции указателей. Однако, когда я пытаюсь напечатать «различные» программы, происходит сбой :( пожалуйста, исправьте меня, если я ошибаюсь.

struct list {
char string[50];
struct list *next;
};

struct distinct {
char string[50];
struct distinct *next; 
};

void checkdistinct() { 

 list *ori = NULL;
 distinct *copy = NULL;
 distinct *check = NULL;

if(ori == NULL && copy == NULL) { //first time.
    ori = ori->next;
    copy = copy->next;
    copy = (distinct*)malloc(sizeof(distinct));
    strcpy(copy->string, ori->string);
    ori = ori->next;
    copy = copy->next;
}
else {}

while(ori!=NULL) {
    check = check->next;

   while(check != NULL) {
    if(strcmp(ori->string, check->string)!=0) {
        check = check->next;
    }
    else {
        ori = ori->next;
        check = NULL;
    }

 }

    //only compare same casing words, for now.
    copy = (distinct*)malloc(sizeof(distinct));
    strcpy(copy->string, ori->string);
    ori = ori->next;
    copy = copy->next;      
 }
}

Когда я пытаюсь распечатать на главном, происходит сбой :( пожалуйста, ответьте, если вам нужны дополнительные комментарии для кодов. Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос