【发布时间】:2016-02-23 00:02:40
【问题描述】:
void SinglyLinkedList::removeBike(int c)
{
Node* current = head;
for(int i = 0; i < c; i++){ // traverse to desired node
current = current -> next;
}
if(current -> next != NULL && current -> prev != NULL){
current -> prev -> next = current -> next;
current -> next -> prev = current -> prev;
delete current; //delete node
}
else if(current -> next == NULL){
current -> prev -> next = current;
delete current;
}
else if(current -> prev == NULL){
current -> next -> prev = current;
delete current;
}
else
cout << "How did you make it this far?";
}
我很确定我在这里没有理解某些内容,但到目前为止研究并没有帮助。
从逻辑上讲,这对我来说是有道理的,但我觉得这太简单了,无法工作,但事实并非如此。
已编辑:更新代码减去输入检查,当我输入任何 int 时它会中断。我也应该将类重命名为双向链表......只是注意到了
【问题讨论】:
-
我见过的找出链表的最好方法是在一张纸上画出节点,然后一步一步画出链接所需的所有变化。
-
for(int i = 0; i < c; i++){应该是for(int i = 0; i < c || current != NULL; i++){。 -
&& current != NULL 对我来说效果更好......然后你必须弄清楚当你在循环之后以 NULL 电流结束时该怎么做。
-
@Josh 停止编辑您的问题并尝试修复代码。不要创建使当前答案无效的移动目标。这没用。
-
它在第一个 if 语句的第一行打破了我。完成编辑。