+ 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(); }
3 odpowiedzi
+ 13
Da, može i tako 👍
Mislim da ti funkcija brisi nije ok, pa je malo analiziraj...
Samo nastavi tako 👍
+ 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
+ 2
hvala , proradilo mi je i kad sam stavio u zagradi
posl = (posl ? posl->next : prvi )=new(Elem(broj))