问题描述
我写了一个insertAfter函数,但是它不起作用 请帮忙!!!
该功能不起作用。当我运行它时,测试失败。
template <class T>
void LinkedList<T>::insertAfter(T toInsert,T afterWhat)
{
ListItem<T> *Node = (ListItem<T>*)malloc(sizeof(ListItem<T>));
Node->value = toInsert;
Node->next = NULL;
Node->prev = NULL;
if(head == NULL){
return;
}
ListItem<T> *temp = head;
while(temp->value != afterWhat && temp->next != NULL){
temp = temp->next;
}
temp->next->prev = Node;
temp->next = Node;
Node->prev = temp;
Node->next = temp->next;
}
解决方法
下一个和上一个节点的分配顺序错误
temp->next->prev = Node;
temp->next = Node;
Node->prev = temp;
Node->next = temp->next;
因为在第二行中,您有temp-> next = Node,然后有Node-> next = temp-> next,结果是Node-> next = Node。像这样修复它
temp->next->prev = Node;
Node->prev = temp;
Node->next = temp->next;
temp->next = Node;// changed the position of this statement