Egyszeresen láncolt lista, eltávolítja az elemet, c - verem túlcsordulás az orosz

Jó napot kívánok. Van egy kód törlése a elemet a listából

Az elején teljesül is, azaz, Először is, ez eltávolítja az elemet, de más elemeit, hogy valami miért nem működik. Belegondolok a második nap, a fejem zümmögő. Gondolom az algoritmus az alábbiak szerint:

  1. az elem eltávolításához
  2. Shift megmaradt elemeinek a listán (balra vagy jobbra, hogy törölték?)

vagy akár arra, hogy: 1. Vegye ki az elemet

  1. Mi megy át a teljes listát, amíg meg nem botlik egy távoli (NULL)
  2. Haladunk az összekötő elem az első távoli egység után a távirányító (megkerülve távoli elemet is)
  3. Ismétlés 3. igénypont amíg nulla elemek. Tekintettel arra, hogy a végén a lista, nem tartjuk.

Köszönöm mindenkinek a segítséget! Kinyitottam egy csomó új dolgot maguknak dolgozik mutató. Külön köszönet

@MichaelPak az indikációja az irányt, ami szükséges ahhoz, ásni, és hogy egy konkrét és részletes magyarázatot a hiba,

@Mike amiért szidtam használatával hatékony algoritmus

@alexolut amit késztette a különbség Ned törlésére és malloc ingyenes

@Vlad Moszkvából a részletes megoldást a problémára, és egy jó ötlet, hogy egy változó típusú előjel nélküli (és esetleg tette).

Nagyon hálás vagyok neked, köszönöm szépen!

Listák rosszabb tömbök úgy, hogy a listákat nem lehet hozzáférni, ha a eleme: szükség van, hogy menjen át a korábbi bejegyzéseket. Ezért, az eltávolítási folyamat a következő:

Így a képről:

Azt is ugyanaz a probléma az, hogy az első eltávolítani elemeket, majd próbálja megtalálni a linket a következő, azaz a helping-> Next-> Következő eltávolítása után már nem mutat a harmadik elem. Először próbálja dolgozni mutatókat, és csak ezután az elem eltávolításához.

Válaszol november 18 '15 at 05:46

Kiváló illusztrációk) - Kromster november 18 '15 at 05:58

2-szer fut a lánc - ez túlzás. Jobb, feljebb a láncot, hogy emlékezzen az előző elemre.

Válaszol november 18 '15 at 06:40

Kapcsolódó cikkek