【发布时间】:2012-04-13 19:58:47
【问题描述】:
我很难弄清楚为什么我的删除功能不起作用。它是一个布尔值,如果项目被删除,则需要返回。任何帮助将不胜感激
boolean delete(SLL *list, String str){
NODE *current, *previous,*temp;
temp=malloc(sizeof(Employee));
previous=NULL;
current = list -> head;
while(current->next!=NULL) {
if(strcmp(current->anEmployee->name, str) == 0){
if(current=list->head){
list->head=current->next;
}
if(previous->next == NULL){//item not found in list
return 0;
}
else { //current is to be deleted
temp->next=current->next;
previous->next=temp->next;
return 1;
}
}
}
【问题讨论】:
-
if(current=list->head){ 应该是 ==?
-
还有你的函数内存泄漏,不需要临时变量
-
提示:开启最高警告级别,像 = vs. == 这样简单的事情就不会再发生了。
-
如果您使用它们,请始终输入 typedef。最好的情况根本不使用它们,NODE、SLL 没有给我们任何信息(除了使用非标准大写,allcapps 用于宏/常量)。你也没有说明什么不起作用(也许很明显,我并没有真正读过那些烂摊子)。
标签: c linked-list