Kezdőoldal » Számítástechnika » Programozás » Mit rontok el a következő...

Mit rontok el a következő láncolt lista forráskódjában?

Figyelt kérdés
Az utolsó adat, amit a listába teszek valamiért mutat valahova ( [link] így crashel a program. Valaki segítene, hogy mi a rossz a forráskódban, és miért?

2017. dec. 24. 17:01
 1/4 A kérdező kommentje:

A forráskód, ami sikeresen lemaradt:

[link]

2017. dec. 24. 17:05
 2/4 anonim ***** válasza:
75%

Tobb elvi hiba is van a programban, ezert hogy pontosan hol kerul oda, nehez kibogozni.


Lancolt listanal kulon kell valasztani magat a Listat es a ListaElemet. Kiirni mindkettot lehet, de a listakat nem agyazzuk egymasba (legfejlebb osszefuzzuk).


A parameteres konstruktor is egy rossz gyakorlat. Jobb teljesen kulonvalasztani az inicializalast es a feltoltest.


A kiir() parameterezese is felesleges. Sosem fogsz olyat irni, hogy:

_ lista1.kiir(lista2);

_ lista1.kiir(lista1);

Nem logikus, felesleges.


A masik rossz gyakorlat a lokalis valtozo cimenek elmentese.

_ Lista ujElem(szam);

_ seged->kovekezo = &ujElem;

Az ujElem a fuggveny vegen felszabadul, ezert kerul szemet a "root"-ba (ami ugye nem a root, hanem az utolso elem).


Rekurzio helyett is erdemes itt ciklust hasznalni. A lista bejarasa nagyon szep C-ben:

_ for(ListaElem* elem = root; elem->kovetkezo != null; elem = elem->kovetkezo) { }

2017. dec. 24. 17:30
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
Rendben, köszönöm a válaszodat. :)
2017. dec. 27. 17:11
 4/4 anonim ***** válasza:
Erre most mondhatnám azt, hogy std::list, de ha magad akarod gyakorlásképp, akkor meg még gyakorolj :D
2017. dec. 28. 19:37
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!