Lista jednokierunkowa

0

Prosiłbym o pomoc/podpowiedzi do tego zadania.
Wykorzystując strukturę danych (struct) znaną jeszcze z języka C, należy zaimplementować listę jednokierunkową zdolną przechowywać liczby całkowite w swoich węzłach.
(Nie korzystając z forward_list z biblioteki).

0

Ale z czym konkretnie masz problem - nie wiesz, co to jest lista jednokierunkowa?

0

Mam taki kod i coś jest w nim nie tak, dostaję następujące info: double free or corruption (fasttop)

 struct ForwardList
{
    int value=0;
    ForwardList* next= nullptr;
};

ForwardList *CreateNode(int value);
void DestroyList(ForwardList *list);
ForwardList *PushFront(ForwardList *list, int value);
void Append(ForwardList *list, ForwardList *tail);

ForwardList *CreateNode(int value)
{
    ForwardList *list = new ForwardList;
    list->value = value;
    return list;
}

void DestroyList(ForwardList *list)
{
    if(list != nullptr)
    {
        ForwardList *temp_list = new ForwardList;
        while(list->next != nullptr)
        {
            temp_list = list;
            list = list->next;
            delete temp_list;
        }
        delete temp_list;
        delete list;
    }

}

ForwardList *PushFront(ForwardList *list, int value)
{

    if(list == nullptr) return nullptr;

    ForwardList *new_list = CreateNode(value);
    new_list->next = list;
    return new_list;
}

void Append(ForwardList *list, ForwardList *tail)
{

    if(list != nullptr)
    {
        list->next=tail;
    }
}
1

Tutaj Masz wszystko o listach, lepiej bym nie wytłumaczył.

1

Przyjrzyj się funkcji DestroyList, próbujesz zwolnić dwa razy pamięć pokazywaną przez co prawda dwa wskaźniki które różnią się nazwą, ale pokazują na to samo. Tenp_list niepotrzebnie inicjujesz operatorem new, ten wskaźnik służy tylko do pomocy, nie ma przechowywać czegoś nowego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1