C++ 代码正在创建分段错误
为什么这段代码会产生分段错误?这是hackerrank的练习题,仅供参考。它说编译器消息是分段错误。听起来您可能需要学习如何使用调试器逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:在一个无关的注释中,从列表中删除的节点会发生什么情况?你把它们从列表中取消了链接,然后呢?搜索内存泄漏。请在if条件C++ 代码正在创建分段错误,c++,linked-list,segmentation-fault,C++,Linked List,Segmentation Fault,为什么这段代码会产生分段错误?这是hackerrank的练习题,仅供参考。它说编译器消息是分段错误。听起来您可能需要学习如何使用调试器逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:在一个无关的注释中,从列表中删除的节点会发生什么情况?你把它们从列表中取消了链接,然后呢?搜索内存泄漏。请在if条件(ptr->next)->数据之前测试ptr->next的值。谢谢,特别是J.Piquard。我只是在while循环
(ptr->next)->数据之前测试ptr->next
的值。谢谢,特别是J.Piquard。我只是在while循环中用ptr->next替换了ptr,它成功了!顺便说一句,声明变量时不需要使用关键字struct
。在C++中,<代码>结构> <代码>是一种类型。
/*
Remove all duplicate elements from a sorted linked list
Node is defined as
struct Node
{
int data;
struct Node *next;
}
*/
Node* RemoveDuplicates(Node *head)
{
// This is a "method-only" submission.
// You only need to complete this method.
Node *ptr= head;
if(ptr == NULL){
return head;
}
while(ptr != NULL){
if(ptr->data == (ptr->next)->data){
ptr->next = (ptr->next)->next;
}
else{
ptr = ptr->next;
}
}
return head;
}