链表崩溃我的程序

时间:2015-05-12 03:30:09

标签: c string linked-list crash strtok

您好我正在编写一个接受用户输入字符串并对其进行标记并将其存储到链表中的程序。我用手册测试了我的链表,我的意思是逐字输入而不使用strtok(),它工作得很好也许我的strtok()有些东西。我不确定你是否也可以检查我的链表的实现。

以下是代码:

E   W   A
101 P   1
102 P   3
101 Q   4
102 Q   4
103 P   3
103 Q   1
104 P   5
104 Q   1
105 P   3
105 Q   2

1 个答案:

答案 0 :(得分:0)

我刚刚删除了字符串malloc部分,我注意到我没有在* nextWord指针上放置任何内容,这就是为什么它只是打印随机特殊字符。

NODE* createList(char* word, char* nextWord)
{
    NODE *ptr = malloc(sizeof(NODE));

    if(ptr == NULL)
    {
         /*node creation failde*/
        return NULL;
     }

    //ptr->word = malloc((strlen(word) + 1)*sizeof(char));
    //ptr->nextWord = malloc((strlen(nextWord) + 1)*sizeof(char));
    ptr->word = strdup(word);
    ptr->nextWord = strdup(nextWord);
    ptr->next = NULL;

    head = tail = ptr;

    return ptr;
}

NODE* addToList(char* word, char* nextWord)
{
    if(head == NULL)
    {
        return createList(word, nextWord);
    }

    NODE *ptr = malloc(sizeof(NODE));

    if(ptr == NULL)
    {
        /*node creation failed*/
        return NULL;
    }

    //ptr->word = malloc((strlen(word) + 1)*sizeof(char));
    //ptr->nextWord = malloc((strlen(nextWord) + 1)*sizeof(char));
    ptr->word = strdup(word);
    ptr->nextWord = strdup(nextWord);
    ptr->next = NULL;

    tail->next = ptr;
    tail = ptr;

    return ptr;
}