我正在阅读《编程采访公开》一书。给出了用于在链接列表的前面插入元素的代码。
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/