Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 18. 04. 2009 17:15

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

spojový seznam - odstraneni sudych prvku - c++

Ahoj,

mohl by mi někdo pomoci s touto fcí?

potřebovala bych ji předělat tak, aby neodstraňovala jen první výskyt, ale všechny výskyty hledaného prvku (v tomto případě všechny sudé prvky).

Děkuji

Code:

Bag* Bag::odstranSude(Bag* Elem)
{
  
  Bag::Elem *pom;
  Bag::Elem *pr=0;   //pr-predchozi
  Bag::Elem *c=celo; //c-aktualni
   while(c!=0)       // dokud se nedojde k poslednímu prvku
   {
    if(c->prvek%2==0)//když je aktuální číslo sudé vymaže se
    {
     if(pr)
     {
       pom=c->dalsi;
       delete c;
       pr->dalsi=pom;
       if(!pom)
         volny=0;
       return this;
     }
     else         
     {
       pom=celo->dalsi;
       delete celo;
       celo=pom;
       if(!pom)
          volny=0;
       return this;
     }
    }
    else           //jinak 
    { 
      pr=c;       //predchozí=aktuální
      c=c->dalsi; //aktuální=dalsi
    }
   }
   
}

Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#2 18. 04. 2009 18:13

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4246
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: spojový seznam - odstraneni sudych prvku - c++

Dříve se to ukončí, protože po odstranění prvního prvku se provede return. Myslím že by mohlo stačit return this přesunout až úplně nakonec.
A do *pr by asi bylo lepší na začátku ukládat NULL než 0, ikdyž to možná dělá to samé, je to s NULLem transparentnější.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#3 18. 04. 2009 18:31

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: spojový seznam - odstraneni sudych prvku - c++

Když dám return this na konec tak se to zasekne.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#4 18. 04. 2009 18:49

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4246
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: spojový seznam - odstraneni sudych prvku - c++

V c totiž zůstane uloženo to, co se smazalo a tak je stále splněno c!=0. Takže místo prvního return this dát c=pom;
možná to bude chtít i jiné úpravy, ale return se určitě musí provést, až se dojde na konec seznamu.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#5 18. 04. 2009 19:14

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: spojový seznam - odstraneni sudych prvku - c++

Díky


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson