51 lines
1.8 KiB
Markdown
51 lines
1.8 KiB
Markdown
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<int> 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 |