Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Bydlisko: Kesa
Príspevok NapísalOffline : 25.03.2012 20:58

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ý: 26.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 25.03.2012 21:33

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
Bydlisko: Kesa
Príspevok Napísal autor témyOffline : 25.03.2012 22:04

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ý: 26.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 26.03.2012 17:06

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.


Odpovedať na tému [ Príspevkov: 4 ] 


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

1969

23.02.2011 18:13

mack0 Zobrazenie posledných príspevkov

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

v HTML, XHTML, XML, CSS

10

2274

05.08.2007 10:20

HAE07 Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

1

1863

25.06.2012 0:08

shaggy Zobrazenie posledných príspevkov

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

v HTML, XHTML, XML, CSS

17

2944

23.06.2007 22:06

sento Zobrazenie posledných príspevkov

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

v Perl, Python, Ruby, CGI

1

682

14.06.2013 21:35

reDo Zobrazenie posledných príspevkov

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

v Redakčné systémy

10

911

23.08.2006 19:38

gumy Zobrazenie posledných príspevkov

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

v Ostatné

3

742

26.10.2010 19:53

shaggy Zobrazenie posledných príspevkov

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

v PHP, ASP

3

556

05.03.2008 10:33

mondzo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zoznam uživateľov

v Redakčné systémy

1

786

21.02.2007 11:20

Freelan Zobrazenie posledných príspevkov

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

73162

30.12.2010 9:51

JanoF Zobrazenie posledných príspevkov

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

v Ostatné programy

3

718

10.07.2008 20:07

dadmtb Zobrazenie posledných príspevkov

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

v HTML, XHTML, XML, CSS

12

824

19.06.2010 13:20

shaggy Zobrazenie posledných príspevkov

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

v Počítačové hry

4

693

22.12.2011 21:15

m4rty Zobrazenie posledných príspevkov

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

v Počítačové hry

6

936

03.10.2011 10:14

dixi Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

1

534

06.08.2009 23:22

Jaro Zobrazenie posledných príspevkov

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

v Počítačové hry

23

5781

24.06.2010 15:18

Spard Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra