为什么我在链接列表中获得exc_bad_access错误

Why I get an EXC_BAD_ACCESS error in my linked list?

本文关键字:exc bad access 错误 链接 列表 为什么      更新时间:2023-10-16

我现在只是在学习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;
}
};

我在线上" getize()"的方法中获取此错误。我不知道怎么了。

addNode内部,当有头节点时,您没有初始化next Node的CC_3指针。

您必须将其初始化为NULL