[ Príspevkov: 4 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Zreťazený zoznam

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26 | 26
Bydlisko: Kesa
NapísalOffline : 25.03.2012 20:58 | Zreťazený zoznam

Trápi ma len taká maličkosť. Vložím si do funkcie 2 pointre a čísla medzi nimi mám zmazať (aj tie samotné pointre). Moja otázka je, či po zadaní delete help sa mi vymaže len ten konkrétny jeden prvok (na tie ostatné tým pádom stratím prístup, ale ostanú mi niekde v pamäti), ale to vyhodí všetky prvky, na ktoré help ukazuje.

Kód:
struct item* erase2(struct item* first, struct item* Where1, struct item* Where2)
{
   item* tmp = first;
   item* help;

   if(Where1 == NULL || Where2 == NULL)
      return first;

   while(tmp->next != Where1)
   {
      tmp = tmp->next;
   }

   help = tmp->next;

   while(help != Where2)
   {
      help = help->next;
   }

   tmp->next = help->next;

   delete help;
   return first;
}


_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Skúsený užívateľ
Skúsený užívateľ
Zreťazený zoznam

Registrovaný: 11.01.09
Prihlásený: 12.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 25.03.2012 21:33 | Zreťazený zoznam

delete help ti zmaze iba danu bunku, na ktoru ukazuje help. Ale nie velmi som pochopil, co vlastne chces spravit, pretoze ty mazes iba jednu bunku ( delete help ), ale chces zmazat cely rozsah od Where1 po Where2, spravne? Dalej tento blok je uplne zbytocny:
Kód:
while(tmp->next != Where1)
   {
      tmp = tmp->next;
   }

Pretoze nakoniec sa aj tak tmp bude rovnat Where1. Ak chces, tuna si mozes prestudovat, ako spravne vykonat mazanie prvkov v zozname: http://www.cs.bu.edu/teaching/c/linked-list/delete/
V skratke ide o to, ze zacnes hladat zaciatok a mazes az pokial nenarazis na koniec, bunku po bunke.


Offline

Užívateľ
Užívateľ
Zreťazený zoznam

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26 | 26
Bydlisko: Kesa
Napísal autor témyOffline : 25.03.2012 22:04 | Zreťazený zoznam

Ono mi to funguje. Najskôr prídem v zozname po where1. Následne sa budem kópiou toho zoznamu pohybovať ďalej až po where2. Potom ten hlavný zoznam (ten mi zostal pred pointrom where1) prepojím s nasledujúcim prvkom tej kópie, ktorá sa zastavila pred where2. Tým pádom mi v zozname zostane to čo som chcel a v tej kópie mi zostanú len tie prvky, ktoré som chcel zmazať. A mojou otázkou bolo, ako zmazať tie prvky. Takže keď vravíš, ťe delete mi zmaže len jednu bunku, tak mi napadá spraviť to rekurzívne, že sa dostanem na konec a odkonca začnem zmazať prvky. (alebo si spraviť struct item* back;)


_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Skúsený užívateľ
Skúsený užívateľ
Zreťazený zoznam

Registrovaný: 11.01.09
Prihlásený: 12.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 26.03.2012 17:06 | Zreťazený zoznam

Myslim, ze pouzit rekurziu na nieco take je ako strielat kanonom po vrabcoch. Neviem, ci si si pozrel link, ktory som uviedol, ale je tam presne co potrebujes a je to na paru riadkov. Vezmime si priklad:
- mame zoznam, kde kazdy prvok oznacme velkym pismenom abecedy a bude v rozsahu od A po F
- chceme zmazat prvky od C po E

Postup bude taky, ze budes v slucke porovnat pomocny pointer ( nazvime ho temp ) ukazujuci na zaciatk zoznamu ( A ) a budes mu priradzovat stale hodnotu ->next, pokial sa nebude rovnat prvku, ktory chceme zmazat ( C ). Ak sa rovna, mozes vyskocit z aktualnej slucky ( aby zbytocne neboli vnorene cykly, ale to uz je na tebe, ako to implementujes ) a v dalsom cykle budes nastavovat prvku temp->next hodnotu dalsieho prvku->next, cize najsamprv to bude C->next a hodnotu C zmazez. Toto budes opakovat az pokial sa nedojde na koncovy pointer, cize po E.

Neviem, ci som to dobre vysvetlil, ale kazdopadne to najdes aj s prikladom na prilozenom linku. Rekurzia je ozaj zbytocne komplikovane riesenie, ale rozhodni sa uz ako chces.


 [ Príspevkov: 4 ] 


Zreťazený zoznam



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Zretazeny zoznam

v Assembler, C, C++, Pascal, Java

4

2015

23.02.2011 18:13

mack0

V tomto fóre nie sú ďalšie neprečítané témy.

zoznam

v HTML, XHTML, XML, CSS

10

2384

05.08.2007 10:20

HAE07

V tomto fóre nie sú ďalšie neprečítané témy.

Zoznam

v JavaScript, VBScript, Ajax

1

1970

25.06.2012 0:08

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

zoznam

v HTML, XHTML, XML, CSS

17

3058

23.06.2007 22:06

sento

V tomto fóre nie sú ďalšie neprečítané témy.

Python zoznam

v Perl, Python, Ruby, CGI

1

730

14.06.2013 21:35

reDo

V tomto fóre nie sú ďalšie neprečítané témy.

zoznam moderatorov

v Redakčné systémy

10

941

23.08.2006 19:38

gumy

V tomto fóre nie sú ďalšie neprečítané témy.

zoznam kontaktov

v Ostatné

3

837

26.10.2010 19:53

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

problem zoznam

v PHP, ASP

3

594

05.03.2008 10:33

mondzo

V tomto fóre nie sú ďalšie neprečítané témy.

Zoznam uživateľov

v Redakčné systémy

1

821

21.02.2007 11:20

Freelan

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

Zoznam katalógov

v Internetový marketing, SEO, reklama

9

74029

30.12.2010 9:51

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

zoznam-program

v Ostatné programy

3

757

10.07.2008 20:07

dadmtb

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoduchý zoznam

v HTML, XHTML, XML, CSS

12

880

19.06.2010 13:20

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Zoznam hier

v Počítačové hry

4

749

22.12.2011 21:15

m4rty

V tomto fóre nie sú ďalšie neprečítané témy.

NFS zoznam

v Počítačové hry

6

989

03.10.2011 10:14

dixi

V tomto fóre nie sú ďalšie neprečítané témy.

Zoznam systemov

v Operačné systémy Microsoft

1

571

06.08.2009 23:22

Jaro

V tomto fóre nie sú ďalšie neprečítané témy.

zoznam serverov

v Počítačové hry

23

5839

24.06.2010 15:18

Spard



© 2005 - 2024 PCforum, edited by JanoF