我正在阅读《编程采访公开》一书。给出了用于在链接列表的前面插入元素的代码。

bool insertInFront( IntElement **head, int data ){
    IntElement *newElem = new IntElement;
    if( !newElem ) return false;
    newElem->data = data;
    *head = newElem;
    return true;
}

恕我直言,这段代码忘记了更新新元素的下一个指针,不是吗?尽管我确定代码是错误的,但我只想确认链接列表的概念并不是十分错误。

我认为代码应在正确的位置添加以下行。
newElem->next = *head;

有人可以告诉我我是对还是错?

最佳答案

我不确定您正在阅读哪种面试书,但是这个代码示例是糟糕的c++。

是的,您需要先将newElem->next指向旧的head,然后再覆盖head。另外,没有理由检查newElem是否为NULL-如果无法分配,则C++会引发异常。另外,insertInFront应该是IntElement的成员函数,而head应该是data成员。

关于c++ - 编程采访中出现的错误:链接列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3929622/

10-08 20:31