Трябва да направя функция за сумиране на 2 линейни функции на части (и двете намаляващи или нарастващи) и да ги вмъкна в трети списък във възходящ ред въз основа на координатите на оста x на всяка точка. Така че създадох множество функции, изглежда, че всички работят, освен тази, но не знам какъв е проблемът. Изобщо не въвежда нищо.
struct coords има двойно x,y;
dList има: coords pt;
node има: node *head, *tail ;
възел *предишен, *следващ;
dList insert(dList L, coords point) {
node *temp;
temp = new node;
if (temp == NULL) {
cout << "error";
exit(1);
}
temp->next = NULL;
temp->prev = NULL;
temp->pt = point;
if (L.head == NULL || L.tail == NULL) {
L.head = temp;
L.tail = temp;
return L;
}
if (L.head->pt.x > temp->pt.x) {
temp->next = L.head;
L.head->prev = temp;
L.head = temp;
return L;
}
if (L.tail->pt.x < temp->pt.x) {
temp->prev = L.tail;
L.tail->next = temp;
L.tail = temp;
return L;
}
node *cur;
cur = L.head->next;
while (cur->pt.x < temp->pt.x)
cur = cur->next;
temp->next = cur->next;
temp->prev = cur;
cur->next->prev = temp;
cur->next = temp;
return L;
}
node
иdList
? Не се събира. Изглежда, чеnode
имаcoords pt
, а неdList
, както ни казвате. - person PajLe   schedule 31.12.2019std::list
и забравете всички хакерски действия в персонализирания списък. - person Zan Lynx   schedule 31.12.2019coords
елемент в съществуващ списък? - person PajLe   schedule 31.12.2019L.head=temp;
иL.tail=temp;
(което е добре, списъкът е просто саморефериращ или кръгъл в този момент). Проблемът идва, когато поставите втория възел. Вие не обработвате случая, когатоL.head == L.tail
, за да знаете дали да зададетеL.head->next = L.tail = temp
. Вместо това за втория възел просто сравняватеpoint
заhead
иtail
, които са един и същ възел по това време. - person David C. Rankin   schedule 31.12.2019