Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

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: 4247
Š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: 4247
Š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