Witam. Mam problem z listami powiązanymi. Koncepcję rozumiem , natomiast przykłady akurat w tym rozdziale dają mi nie jasne podejście do tworzenia i usuwania list powiązanych. W rozdziale również wspomniano o STL (standardowej bibliotece szablonów) o której będzie później. Nie lubię i nie chcę pozostawiać rozdziałów nie skończonych za sobą. Każdy rozdział ma zadania do wykonania. Czytałem różne przykłady (które niestety używają coś czego jeszcze nie przerabiałem) po Polsku i angielsku. I nadal gdzieś się gubię. Potrzebuję przykładu na moim poziomie.
Wszystko co potrafię w c++ mam wypisane w sygnaturce.
Treść zadania :
//Napisz program usuwający element z listy powiązanej. Funkcja usuwająca powinna przyjmować
// element tylko przeznaczony do usunięcia.
//**Podpowiedzi : a gdybyś miał wskaźnik wskazujący do poprzedniego węzła ?
Próbuje od tygodnia to zrobić korzystając z przykładów w książce. Wszystko poniżej sam pisałem.
#include <iostream>
struct list
{
list* previousList;
int date = 0;
list* nextlist;
};
list* firstlist = NULL;
list* lastlist = NULL;
list* newlist( int x) // tworzenie nowej list./
{
list* w_list = new list; // tworzy pierwszy element naszej listy.
w_list->nextlist = firstlist;// przypiwsywanie wskaznik do nastepnej listy
w_list->date += x; //podnoszenie danych.
firstlist = w_list; // przypisanie aktualnej listy do firstlist.
return w_list;
}
list* removelist(int d)
{
list* actuallist = firstlist;
while (actuallist->date!= NULL)
{
std::cout << actuallist->date;
actuallist->nextlist;
//std::cout << actuallist->date << std::endl;
}
return actuallist;
}
int main()
{
int x = 0;
int s = 1;
while (s !=0)
{
std::cout << "Press 1 to Generate new list \n";
std::cin >> s;
switch (s)
{
case 1: // Tworzenie nowej listy i drukowanie.
{
x += 1;
list* createdNewList = newlist(x);
std::cout << createdNewList->date << std::endl;
break;
}
case 2: // usuwanie listy.
{
int d = 0;
std::cout << "Chose list number to delete : \n";
std::cin >> d;
x -= 1;
removelist(d);
break;
}
}
}
}