Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从2个已排序的链表中构造最大和路径链表?_C++ - Fatal编程技术网

C++ 如何从2个已排序的链表中构造最大和路径链表?

C++ 如何从2个已排序的链表中构造最大和路径链表?,c++,C++,我试图返回一个已排序的链表,该链表具有2个已排序链表中的最大和路径。 该函数如下所示:它将两个启动列表作为参数 我总是被提示分段错误 列表MaxSumPath(列表l1、列表l2){ 列表l3; 节点*temp1=l1.head; 节点*temp2=l2.head; 节点*path1=temp1; 节点*path2=temp2; 而(temp1!=0 | | temp2!=0){ int sum1=0; int-sum2=0; 而(temp1!=0&&temp2!=0&&temp1->data!

我试图返回一个已排序的链表,该链表具有2个已排序链表中的最大和路径。 该函数如下所示:它将两个启动列表作为参数

我总是被提示分段错误

列表MaxSumPath(列表l1、列表l2){
列表l3;
节点*temp1=l1.head;
节点*temp2=l2.head;
节点*path1=temp1;
节点*path2=temp2;
而(temp1!=0 | | temp2!=0){
int sum1=0;
int-sum2=0;
而(temp1!=0&&temp2!=0&&temp1->data!=temp2->data){
sum1+=temp1->数据;
路径1->next=temp1;
temp1=temp1->next;
sum2+=temp2->数据;
路径2->next=temp2;
temp2=temp2->next;
}
if(sum1>sum2){
while(路径1!=0){
l3.AddToTail(路径1->数据);
路径1=路径1->下一步;
}
}否则{
而(路径2!=0){
l3.AddToTail(路径2->数据);
路径2=路径2->下一步;
}
}
如果(temp1==0){
while(temp2!=0){
l3.AddToTail(temp2->data);
temp2=temp2->next;
}
}
如果(temp2==0){
while(temp1!=0){
l3.AddToTail(temp1->data);
temp1=temp1->next;
}
}
}
返回l3;
}
我希望l3保存生成的链表


是时候学习如何使用调试器在崩溃发生时捕获崩溃,并使用调试器定位崩溃发生在代码中的位置,然后检查所涉及变量的值。不过有一个提示:您何时何地为
路径1
路径2
分配内存?我认为没有理由在这里使用原始指针。C++有一个非常强大的特性,叫做RAII。只需执行
节点路径1
。您可以使用来获得两个集合的排序并集。@SamanthaRocker很抱歉您的时间不够了,但是这里的人太忙了,无法去调试您的代码。无论如何,我认为一种可能的解释是声明指向节点的指针,但不分配内存(正如@Someprogrammerdude已经暗示的那样。指针指向内存地址,但如果您不直接保留该空间,它们将不会指向任何地方。因此,当您执行
path1->next=temp1;
时,那里没有
next
data
成员。是时候学习如何使用调试器在崩溃发生时捕获崩溃,并使用它来解决问题了。)在代码中找到它发生的地方,然后检查所涉及的变量的值。提示:你在什么时候和哪里分配内存?<代码> PAT1 < /COD>或<代码> PAT2<代码>?我看这里没有理由使用原始指针。C++有一个非常强大的特性,叫做RAII。只需执行<代码>节点PAT1 。你可以用来得到排序的UNIO。两个集合中的n个。@SamanthaRocker很抱歉您的时间不够了,但是这里的人太忙了,无法去调试您的代码。无论如何,我认为一个可能的解释是您声明指向节点的指针,但没有分配内存(正如@Someprogrammerdude已经暗示的那样。指针指向内存地址,但如果您不直接保留该空间,它们将不会指向任何地方。因此,当您执行
path1->next=temp1;
时,那里没有
next
data
成员。