0

我正在尝试编写一个抽象数据类型来表示使用链表的整数项集。我遇到分段错误(linux)或程序崩溃(windows),无法理解我的代码有什么问题。

#include<stdio.h>
#include<stdlib.h>

struct linkedListElement{
    int data;
    struct linkedListElement * next;
        };

struct linkedListSet {

    struct linkedListElement * header;
    struct linkedListElement * current;
    struct linkedListElement * temp;



         };

struct linkedListSet * createdSet (){

struct linkedListSet * newSet = malloc(sizeof(struct linkedListSet));

newSet->header->data = 0;
newSet->header->next = NULL;

return newSet;

                 };


int main(){
//create set
    struct linkedListSet * firstSet = createdSet();


return (0);
}   
4

2 回答 2

0

看看这里..

struct linkedListSet * createdSet (){

    struct linkedListSet * newSet = malloc(sizeof(struct linkedListSet));

    // newSet->header is just a pointer - doesn't point to anything valid!
    newSet->header->data = 0;
    newSet->header->next = NULL;

    return newSet;

};

您需要确保指针也有效。您可以执行以下操作:

newSet->header = malloc(sizeof(struct linkedListElement));
于 2013-11-11T01:58:22.083 回答
0

您创建了一个未初始化的linkedListSet,然后取消引用指针数据和下一个。这些不指向任何内存。在使用它之前,您需要分配一个linkedListElement。正确的初始化是:

struct linkedListSet * createSet ()
{
    struct linkedListSet * newSet = malloc(sizeof(struct linkedListSet));
    newSet->header = NULL;
    newSet->current = NULL;
    newSet->temp = NULL;
    return newSet;
};
于 2013-11-11T02:02:22.023 回答