Kezdőoldal » Számítástechnika » Programozás » Hogy kell egyirányú láncolt...

Prog kérdése:

Hogy kell egyirányú láncolt listából elemet törölni? (Free pascal )

Figyelt kérdés
2011. jún. 29. 19:11
 1/3 anonim ***** válasza:

Érdemes törlő eljárást írni rá, illetve osztályba csomagolni.

Ha az utolsó elemet akarod törölni akkor törlöd és a helyét nil-re állítod. Különben eltárolod a következő elem helyét. Adatát és mutatóját a törlendő elem helyére másold. És most jön a trükk: nem a törlendő elemet törlöd hanem az eltárolt következő elemet.

Ez azért kell mert nem tudod visszafele (hatékony futási idővel) megnézni a mutatókat.

Például legyen egy ilyen (sematikusan) láncolt listánk:

adat1 -> adat2 -> adat3 -> adat4 -> adat5 -> nil

Az adat3-on állok és törölni akarom. Adat3 mutatóját és adatát felülírom adat4-ével,( de megjegyzem hogy az eredeti adat4 hol van.)

Ekkor adat5-re 2 adat4 is mutat.

adat1 -> adat2 -> adat4(másolat) -> adat5 adat4 -> adat5 -> nil

Az eredeti adat4-et törlöm. És lesz

adat1 -> adat2 -> adat4(másolat) -> adat5 -> nil

lista. (A másolat adat4 az megkülönböztethetetlen a volt eredeti adat4-től)

2011. jún. 29. 23:48
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

Ha láncolt listánál kétségeid vannak, akkor nagyon egyszerű a módszer: rajzolni kell.

Láncolt listából törlés például nagyon egyszerű: megállsz a törlendő elem előtt (tehát ha az aktuális elem next-je a törlendő), elmented a nextet, a next nextjével felülírod az aktuális nextet, aztán törlöd a mentett mutatót.

2011. jún. 30. 07:46
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Köszönöm:)
2011. jún. 30. 13:40

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!