** Hii我正在尝试解决这个hackerrank问题,但是我遇到运行时错误“分段错误”。
请帮助我解决此错误。
问题链接** = https://www.hackerrank.com/challenges/find-the-merge-point-of-two-joined-linked-lists/problem
int findMergeNode(SinglyLinkedListNode* head1, SinglyLinkedListNode* head2) {
int length1 = 0;
int length2 = 0;
SinglyLinkedListNode* list1 = head1;
SinglyLinkedListNode* list2 = head2;
while(list1 != nullptr)
{
list1 = list1->next;
length1 ++;
}
while(list2 != nullptr)
{
list2 = list2 -> next;
length2 ++;
}
//I want to point list2 pointer to the largest list
if(length1 > length2)
{
SinglyLinkedListNode* temp = list1;
list1 = list2;
list2 = temp;
}
for(int i=0 ; i< abs(length1 - length2) ;i++)
{
list2 =list2 -> next;
}
while(list2 != list1)
{
list1 = list1->next;
list2 = list2->next;
}
return list1->data;
错误=我收到“细分错误”错误。
答案 0 :(得分:0)
您的方法很好。但是找到两个列表的长度后,list1和list2将指向null。无需将列表重置为各自的标题,即可遍历下一个指针。
list1 = head1; list2 = head2;
在将最大列表设置为list2之前,将它们设置为heads。