无法返回链表中的节点时返回什么?

时间:2013-11-26 22:19:43

标签: c data-structures linked-list

我在这里有这个简单的getNode()函数。现在,假设用户在索引处调用的节点大于链表本身的长度。我该如何处理这样的错误并返回一些内容?

NODE* getNode(NODE* start, int index)
{
    int i;
    for(i = 0; i < index; i++)
    {
        start = start -> next;
    }
    return start;
}

1 个答案:

答案 0 :(得分:4)

通常您会返回NULL。有些库具有函数声明,如:NODE *getNode(NODE *start, int index, int *status);,如果出现错误,则设置状态代码。

您可以执行以下操作:

NODE *getNode(NODE *start, int index, int *status)
{
    // status of 1 means node not found
    *status = 1;
    // ...
    return NULL;
}

// ...

int status = 0;
NODE *myNode = getNode(nodeList, 10, &status);

if (!myNode && 1 == status) {
    printf("Not found!\n");
}