+ 3

Somebody knows why it doesn’t output 4,2,3 but only number 3 in the linked list

#pragma once #include <iostream> using namespace std; class lista3 { struct Elem { int broj; Elem *next; Elem(int num = 0, Elem *sled = nullptr) { broj = num; next = sled; } }; Elem* prvi, *posl; public: void brisi() { Elem* tek, *stari; stari = tek = prvi; if (prvi != nullptr) { while (stari) { tek = tek->next; delete stari; stari = tek; } } } lista3& dodaj(int broj) { posl = posl ? posl->next : prvi = new Elem(broj); return *this; } lista3():prvi (nullptr), posl( nullptr ){ } void show() { for (Elem* tek = prvi; tek; tek = tek->next) { cout << tek->broj << endl; } } ~lista3() { brisi(); } }; int main() { lista3 list; list.dodaj(4); list.dodaj(2); list.dodaj(3); list.show(); }

15th Dec 2018, 7:22 PM
Nikola
Nikola - avatar
3 odpowiedzi
+ 13
Da, može i tako 👍 Mislim da ti funkcija brisi nije ok, pa je malo analiziraj... Samo nastavi tako 👍
17th Dec 2018, 7:40 AM
LukArToDo
LukArToDo - avatar
+ 10
Nilola, nisam bliska sa c++, ali pokušaću da pomognem. Inače, sviđa mi se kako si riješio funkciju "dodaj" pomoću ternary 👍 Ovako, u funkciji "dodaj" kod linije: posl = posl ? posl->next : prvi = new Elem(broj); izostavio si dodjeljivanje broja (Node, Elem) u slučaju da je posl=true : posl= posl ? posl->next = new Elem(broj) : prvi=new Elem(broj) ; Mislim da bi nakon ove ispravke trebalo biti sve ok. Evo tvog koda sa ispravkom: https://code.sololearn.com/cLIHdQWlDPF8/?ref=app
17th Dec 2018, 7:22 AM
LukArToDo
LukArToDo - avatar
+ 2
hvala , proradilo mi je i kad sam stavio u zagradi posl = (posl ? posl->next : prvi )=new(Elem(broj))
17th Dec 2018, 7:39 AM
Nikola
Nikola - avatar