为什么我的链表中出现EXC_BAD_ACCESS错误?

时间:2017-09-18 09:35:46

标签: c++

我现在正在学习C ++,所以我想创建一个简单的链表程序来学习如何编写C ++。 (我来自Java和Python)。有时(不是每次)我都会收到EXC_BAD_ACCESS错误。 这是我的代码:

#include <iostream>
#include <string>

using namespace std;

class LinkedList
{

struct Node
{
    int value;
    Node *next;
};


private:
    Node *head;
public:

LinkedList()
{
    head = NULL;
}

void addNode(int value, int index)
{
    Node *node = new Node;
    node->value = value;
    Node *n = head;
    if (index == 0)
    {
        node->next = n;
        head = node;
        return;
    }

    int size = getSize();

    for (int i = 0; i < size - 1; i++)
    {
        if (i == index - 1)
        {
            node->next = n->next;
            n->next = node;
        }
        n = n->next;
    }
}

void addNode(int value)
{
    Node *node = new Node;
    node->value = value;
    if (!head)
    {
        node->next = NULL;
        head = node;
        return;
    }
    Node *n = head;
    int size = getSize();

    for (int i = 0; i < size - 1; i++)
    {
        n = n->next;
    }
    n->next = node;
}

int getSize()
{
    Node *_node = new Node;
    _node->value = head->value;
    _node->next = head->next;
    int size = 1;
    while (_node != NULL)
    {
        _node = _node->next;
        size++;
    }
    return size - 1;
}

string printList()
{
    Node *n = head;
    string output = to_string(n->value);
    int size = getSize();

    for (int i = 0; i < size - 1; i++)
    {
        n = n->next;
        output.append(" -> " + to_string(n->value));
    }
    return output;
}
};

我在“_node = _node-&gt; next”行上的方法“getSize()”中收到此错误我不知道出了什么问题。

1 个答案:

答案 0 :(得分:0)

addNode内部,当有头节点时,您没有初始化nextNode的{​​{1}}指针。

您必须将其初始化为NULL