Mam pytanie, jak zrobić prostą funkcję, która doda elementy do listy, sortując je rosnąco (pierwszy element wrzuca, następnie wrzuca albo przed, jeżeli mniejszy, albo po, jeżeli jest większy).
struct node{
int val;
node *next;
};
int main()
{
node *Head = NULL;
}
Funkcja miałaby wyglądać mniej-więcej tak:
void add(node *&Head, int x)
{
node *p = new node;
p->v=x;
if (Head== NULL || x <= (Head->v))
{
p->next = Head;
Head = p;
}
else
{
node *p1;
p1 = Head;
while (x > (p1->v)) // tutaj chcę ustawić wskaźnik p1 na element, który jest mniejszy bądz równy x
{
if(p1->next = NULL) break;
p1 = p1->next;
}
if (p1->next == NULL)
{
p->next = p1->next;
p1->next = p;
}
if (p1 != NULL)
{
}
}
}
Nie jestem w stanie go dokończyć ponieważ cały czas wyskakuje mi błąd kompilacji:Unhandled exception at 0x01204C09 in zad.exe: 0xC0000005: Access violation reading location 0x00000008 i wskazuje na liniję 14 (while (x > (p1->v)) Czyli początek pętli while. Nie wiem w czym tkwi problem.