Implementirajte lastno implementacijo enosmerno povezanega seznama (https://en.wikipedia.org/wiki/Linked_list) za poljubni tip (LinkedList).
Implementacijo šablono razredov napišite vse v posamezno datoteko .h (brez .cpp).
Implementirajte šablono razreda Node, ki ima:
instančni spremenljivki:
value, ki je poljubnega tipa, in
next, ki kaže na naslednika (tipa Node*) v seznamu.
konstruktor z 2 vrednostima (next ima privzeto vrednost nullptr)
get in set metode.
Implementirajte šablono razreda LinkedList, ki ima:
instančno spremenljivko head, ki predstavlja začetek vašega seznama oz. vaše prvo vozlišče. V primeru, da je prazen seznam, naj ima privzeto vrednost nullptr.
metodo isEmpty(), ki vrne true, če je seznam prazen, sicer naj vrne false,
metodo getSize(), ki vrne dolžino seznama,
metodo add(T value), ki doda vrednost na konec seznama,
metodo at(unsigned int index), ki vrne vrednost, ki se nahaja na podanem indeksu,
destruktor, kjer je potrebno izbrisati vsa ustvarjena vozlišča.
V programu main ustvarite en primerek LinkedList in testirajte vse metode.
Primer:
int main(){ LinkedList list;
std::cout << "List " << (list.isEmpty() ? "IS" : "IS NOT") << " empty." << std::endl << std::endl;
list.add(1);
list.add(4);
list.add(10);
std::cout << "List " << (list.isEmpty() ? "IS" : "IS NOT") << " empty." << std::endl << std::endl;
std::cout << "List (size " << list.getSize() << "): " << std::endl;
for(int i=0; i<list.getSize(); i++)
std::cout << list.at(i) << std::endl;
return 0;
}
Izhod:
List IS empty.
List IS NOT empty.
List (size 3): 1 4 10