void dzielenie_listy(node* head, node* head_1, node* head_2)
{
while (head != nullptr) //idk co tutaj
{
node* p = head;
head = head->next;
p->next = head_1;
head_1 = p;
if (head != nullptr)
{
p->next = head_2;
head_2 = p;
}
}
}
void dzielenie_listy_2(node* head, node* head_1, node* head_2)
{
int size = 0;
node* p = head;
while (p != nullptr)
{
p = p->next;
size++;
}
size = size / 2;
p = head;
for (int i = 1; i < size; i++)
p = p->next;
head_1 = head;
head = nullptr;
head_2 = p->next;
p->next = nullptr;
}
void scal(node* head, node* head_1, node* head_2)
{
head = nullptr;
dodaj(head, 0);
node* tail = head;
node* p1 = head_1;
node* p2 = head_2;
while (head_1 != nullptr && head_2 != nullptr)
{
if (p1->wartosc > p2->wartosc)
{
head_2 = head_2->next;
tail->next = p2;
p2->next = nullptr;
tail = p2;
}
else
{
}
if (head_1 != nullptr)
{
tail->next = head_1;
head_1 = nullptr;
}
else
{
}
}
}
mam trzy funkcje, dwie pierwsze mają podzielić listę head i pierwszą jej połowę przenieść do head_1 a drugą do head_2, natomiast w trzeciej funkcji chcę scalić elementy z head_1 i head_2 do head. Co robię źle w dwóch pierwszych funkcjach? I czy mógłby ktoś dokończyć trzecią bo są tam braki?