Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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++ 如何获取这两个已排序链表之间的开关位置_C++ - Fatal编程技术网

C++ 如何获取这两个已排序链表之间的开关位置

C++ 如何获取这两个已排序链表之间的开关位置,c++,C++,我花了这么长时间努力做这个家庭作业,我真的很感激能得到的任何帮助 我遇到的问题很简单,但有点让人困惑 因此,问题的很大一部分得到了解决(如第一个代码注释中所述——找到这两个排序链表之间的最大和路径) /* |-------------------------------------------------------------------------- |ADSL分配1 |最大和问题| |-----------------------------------------------------

我花了这么长时间努力做这个家庭作业,我真的很感激能得到的任何帮助

我遇到的问题很简单,但有点让人困惑

因此,问题的很大一部分得到了解决(如第一个代码注释中所述——找到这两个排序链表之间的最大和路径)

/*
|--------------------------------------------------------------------------
|ADSL分配1 |最大和问题|
|--------------------------------------------------------------------------
|*提供两个排序列表作为输入。
|*这些列表有一些共同的节点。
|*查找由这两个列表的节点的并集组成的新列表。
|*要创建新列表,您应该从每个列表中获取部分(一个或多个节点的路径)并将它们合并在一起。
|*仅允许在交叉点(两个列表中的同一节点)在两个原始列表之间切换。
|*以计算结果列表,该列表具有代表最大总路径的路径。
|输入:
|*两个已排序的链表。
|输出:
|*包含最大和路径的新列表。
|*两个列表之间的开关位置。
*/
#包括
使用名称空间std;
类节点{
公众:
int-num;
节点*下一步;
节点(int data,Node*next=0){this->num=data;this->next=next;}
Node(){this->next=0;}
};
班级名单{
公众:
节点*头;
节点*尾部;
List(){head=tail=0;}
void AddToTail(整数数据){
如果(head==0)head=tail=新节点(数据);
否则{
tail->next=新节点(数据);
tail=tail->next;
尾部->下一步=0;
}
}
作废打印(){
节点*温度=头部;
如果(温度==0)cout num)
{
sum1+=head1->num;
head1=head1->next;
}
否则如果(头2->num<头1->num)
{
sum2+=head2->num;
head2=head2->next;
}
否则就断了;
}
如果(头1==0)
{
while(标题2){
sum2+=head2->num;
head2=head2->next;
}
}
如果(头2==0)
{
while(标题1){
sum1+=head1->num;
head1=head1->next;
}
}
如果(sum1>=sum2)
{
如果(结果==0){
结果=temp1;
温度=水头1;
}
否则{
temp->next=temp1;
温度=水头1;
}
}
else if(sum1next=temp2;
温度=水头2;
}
}
if(磁头1和磁头2和温度){
head1=head1->next;
head2=head2->next;
温度->下一步=0;
}
}
while(结果)
{
l、 AddToTail(结果->数值);
结果=结果->下一步;
}
返回l;
}
int main(){
列表l1;
l1.附加邮件(1);
l1.附加邮件(3);
l1.附加邮件(30);
l1.附加邮件(90);
l1.AddToTail(120);
l1.AddToTail(240);
l1.AddToTail(511);
列表l2;
l2.AddToTail(0);
l2.附加邮件(3);
l2.AddToTail(12);
l2.AddToTail(32);
l2.AddToTail(90);
l2.AddToTail(125);
l2.AddToTail(240);
l2.AddToTail(249);

cout您可以创建一个滑动窗口,其中滑动窗口从第一个交点到第二个交点。对于两个链表,存在两个滑动窗口。两个窗口之和较大的滑动窗口必须位于新链表中。
在滑动窗口的第一个交叉点之后,可以有两个临时变量指向每个链表中的第一个元素。并且,一旦找到路径,可以将交叉点节点指向该地址。

可以创建一个滑动窗口,其中滑动窗口从第一个交叉点运行到第二个。对于两个链表,存在两个滑动窗口。两个滑动窗口之和较大的滑动窗口必须位于新的链表中。 在滑动窗口的第一个交叉点之后,可以有两个临时变量指向每个链表中的第一个元素。并且,一旦找到路径,就可以将交叉点节点指向该地址