链表的二维数组

时间:2013-01-25 17:42:24

标签: c memory linked-list

我正在尝试创建一个二维链表来保存稀疏矩阵并编写此代码以在正确的位置插入新节点:

void insertNewNode(node **rowHead, node **columnHead, int value, int row, int column) { 
    //Get to the correct position in the column linked list
    if (*columnHead == NULL) {
        *columnHead = malloc(sizeof(node));
    } else {
        while((*columnHead)->nextColumn != NULL && (*columnHead)->nextColumn->row < row)
            *columnHead = (*columnHead)->nextColumn;
    }

    //Get to the correct position in the row linked list.
    if (*rowHead == NULL) {
        *rowHead = malloc(sizeof(node));
    } else {
        while((*rowHead)->nextRow != NULL && ((*rowHead)->nextRow->column < column))
            *rowHead = (*rowHead)->nextRow;
    }

    node *newNode = malloc(sizeof(node));
    newNode->column = column;
    newNode->row = row;
    newNode->value = value;

    (*columnHead)->nextColumn = newNode;
    (*rowHead)->nextRow = newNode;
}

由于某种原因,最后一行:

(*rowHead)->nextRow = newNode;

导致EXC_BAD_ACCESS错误而前一行没有,我不完全确定原因。任何人都可以看到出现这种情况的原因吗?

1 个答案:

答案 0 :(得分:1)

在您的程序中的其他位置可能只是一个问题,即如何分配/维护行数据,并且您的列数据恰好正常。你有没有检查过rowHead的价值?也许它是null或垃圾值...然后你可以从那里追溯到找出它是如何发生的。