链接列表null ptr错误

时间:2018-05-10 21:47:06

标签: c++ list pointers hyperlink singly-linked-list

这是主要功能。使用Visual Studio 2017。

list a;
a.insertAtEnd("i", 1);
a.insertAtEnd("love", 1);

这里主要是调用末尾的第二个插入。程序崩溃并说getnext()为NULL。即使在创建每个新节点时,下一个指针也被声明为NULL。

    class node {
public:
    node(string value) {
        next = NULL;
        data = value;
    }
    void setNext(node *temp) {
        next = temp;
    }
    void setdata(string value) {
        data = value;
    }
    node* getNext() {
        return next;
    }

调试器显示此函数有问题^

string getData() {
    return data;
}
void createDetail() {
    detail *tmp = new detail();
    d = tmp;
}
void setDetail(int lin) {
    d->insertAtEnd(lin);
}
void getDetails() {
    d->print();
}
private:
    node *next;
    string data;
    detail *d;
};


class list {
public:
    list() {
        head = NULL;
    }
    void insertAtEnd(string, int);
    void insertAfter(string, string);
    void display();
private:
    node *head;
};

void list::insertAtEnd(string value, int lin) { //main func being used
if (head == NULL) {
    node *temp = new node(value);
    temp->createDetail();
    temp->setDetail(lin);
    head = temp;
}
else {
    node *temp2 = head;
    while (temp2->getNext() != NULL || temp2->getData()!=value)
    {
        temp2 = temp2->getNext();
    }
    if (temp2->getData() == value)
    {
        temp2->setDetail(lin); //if same line then increment frequency, dont create new detail as word exists
    }
    else
    {
        node *temp = new node(value);
        temp->createDetail();
        temp->setDetail(lin);
        temp2->setNext(temp);
    }

}
}

0 个答案:

没有答案