这是我的删除节点函数,任何人都可以帮我看看它有什么问题吗?我似乎遇到了很多麻烦,因为我不了解它的某些部分。deleteNode函数错误
指向头的指针是否会假设被使用? struct lnode **头,我知道这是一个指向头指针的指针。但是我不确定我是否正确使用它。
代码的第二部分,我不确定在删除函数调用的那个后,我是否正确连接了这两个节点。
void deleteNode (struct lnode** head, struct lnode* node) { if((*head) == node){ struct lnode* temp = (*head) -> next; free(node); free(node->word); *head = temp; } else{ struct lnode *nextNode = node->next; struct lnode *prevNode; while((*head) != NULL){ if((*head)->next = node){ prevNode = *head; break; } else *head = (*head) -> next; } prevNode->next = nextNode; free(node); free(node->word); } }
写入'free(node); free(node-> word);'因为第二个调用正在访问一个现在释放的内存块。您必须将这些呼叫排序为“free(节点 - >单词);自由(节点);'。 – 2014-05-05 03:33:00