Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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++_Sorting_Doubly Linked List - Fatal编程技术网

C++ 按升序插入双链接列表时出现问题

C++ 按升序插入双链接列表时出现问题,c++,sorting,doubly-linked-list,C++,Sorting,Doubly Linked List,我需要做一个函数来求两个分段线性函数(递减或递增)的和,然后根据每个点的x轴坐标以升序将它们插入到第三个列表中。所以我创建了多个函数,除了这一个,所有函数似乎都已签出,但我不知道问题出在哪里。它根本没有输入任何东西 结构坐标具有双x,y dListhas:coords pt 节点有:节点*头,*尾 节点*prev,*next dList插入(dList L,coords point){ 节点*温度; temp=新节点; if(temp==NULL){ cout-next=NULL; temp->

我需要做一个函数来求两个分段线性函数(递减或递增)的和,然后根据每个点的x轴坐标以升序将它们插入到第三个列表中。所以我创建了多个函数,除了这一个,所有函数似乎都已签出,但我不知道问题出在哪里。它根本没有输入任何东西

结构坐标具有双x,y
dListhas:coords pt
节点有:节点*头,*尾
节点*prev,*next

dList插入(dList L,coords point){
节点*温度;
temp=新节点;
if(temp==NULL){
cout-next=NULL;
temp->prev=NULL;
温度->温度=点;
if(L.head==NULL | | L.tail==NULL){
L.压头=温度;
L.尾=温度;
返回L;
}
如果(左封头->零件x>温度->零件x){
温度->下一步=左压头;
L.压头->上一个=温度;
L.压头=温度;
返回L;
}
如果(左尾翼->第x部分<温度->第x部分){
温度->上一个=左尾;
L.尾部->下一个=温度;
L.尾=温度;
返回L;
}
节点*cur;
cur=L.head->next;
而(当前->点x点x)
cur=cur->next;
临时->下一步=当前->下一步;
温度->上一个=当前;
当前->下一步->上一步=温度;
当前->下一步=温度;
返回L;
}

要插入的节点是中间的问题。你应该先看一个节点,而不是看当前的一个节点。试着在纸上处理它,你会看到这有什么不同:

  node * cur;
  // also start at head here
  cur=L.head;
  while(cur->next->pt.x<temp->pt.x)
    cur=cur->next;
  temp->next=cur->next;
  temp->prev=cur;
  cur->next->prev=temp;
  cur->next=temp;

我希望这对你有帮助。

< P>插入节点在中间的情况是问题。你应该先看一个节点,而不是看当前的一个节点。试着在纸上处理它,你会看到这有什么不同:

  node * cur;
  // also start at head here
  cur=L.head;
  while(cur->next->pt.x<temp->pt.x)
    cur=cur->next;
  temp->next=cur->next;
  temp->prev=cur;
  cur->next->prev=temp;
  cur->next=temp;

希望你能帮助你。< /P>你能添加“<代码>节点< /COD>和<代码> dList< /C>吗?它不加起来。看起来像代码>节点[/COD]有一个<代码> COORDS P< <代码>,而不是你告诉我们的<代码> dList< /Cord>。这是标记C++,并且不声明任何限制或原因。所以使用<代码> STD::列表< /C> >和伪造t所有的自定义列表都被黑客攻击。另外,您询问的确切功能应该是什么?在现有列表中插入

coords
元素?您的插入有问题。对于第一个节点,您设置
L.head=temp;
L.tail=temp;
(这很好,列表只是自我引用,或者在这一点上是循环的)。插入第二个节点时会出现问题。您没有处理
L.head==L.tail
的情况,以确定是否设置
L.head->next=L.tail=temp
。相反,对于第二个节点,您只需比较
head
tail
点,这两个节点当时是同一个节点。是否可以添加h定义了OW<代码>节点<代码> >代码> dlist < /C> >。看起来<>代码>节点< /COD>有<代码> CORDS Pt<代码>,而不是你告诉我们的<代码> dlist < /C>。这是标记C++,不声明任何限制或原因。所以使用<代码> STD::列表< /代码>,忘记所有自定义列表黑客。您正在询问的确切功能是什么?将
coords
元素插入到现有列表中?您在插入时遇到了问题。对于第一个节点,您设置了
L.head=temp;
L.tail=temp;
(很好,该列表只是自引用,或者是循环的)。插入第二个节点时会出现问题。您没有处理
L.head==L.tail
的情况,以确定是否设置
L.head->next=L.tail=temp
。而对于第二个节点,您只需比较
head
tail
点,这两个节点在当时是相同的。没有问题。I aI’我很高兴能帮上忙。没问题。我很高兴能帮上忙。