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
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.