我正在阅读编程访谈暴露的书.有一个代码用于在链接列表的前面插入一个元素.
bool insertInFront( IntElement **head, int data ){
IntElement *newElem = new IntElement;
if( !newElem ) return false;
newElem->data = data;
*head = newElem;
return true;
}
Run Code Online (Sandbox Code Playgroud)
恕我直言这段代码忘记更新新元素的下一个指针,不是吗?虽然我确信代码是错误的,但我只是想确认我的链表概念并非严重错误.
我相信代码应该在正确的位置添加以下行.
newElem->next = *head;
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我,我是对还是错?
由于这是插在前面,你是对的.新节点的下一个应该是当前头,然后应将头设置为指向新节点.
bool insertInFront( IntElement **head, int data ){
IntElement *newElem = new IntElement;
if( !newElem ) return false;
newElem->data = data;
newElem->next = *head;
*head = newElem;
return true;
}
Run Code Online (Sandbox Code Playgroud)
当然,这里还有其他一些不好的风格和设计,或者说是错误的.