Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa brisanjem stabla

[es] :: C programiranje :: Problem sa brisanjem stabla

[ Pregleda: 1171 | Odgovora: 7 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 496
195.252.106.*



Profil

icon Problem sa brisanjem stabla27.02.2005. u 23:31

Imam funkciju koja brise stablo i koja nece da se iskompajlira:
Code:
int btree::obrisi(){
    drvo *next=koren;
    stack<drvo*> stek;
    while (NULL!=next){
        stek.push(next);
        next=next->levo;
    };
    while (!stek.empty()){
        next=stek.pop();// ******ovde je greska koju ne razumem*****
        if (next>0){
            stek.push(-next); 
            next=next->desno;
            while (next!=NULL){
                stek.push(next);
                next=next->levo;
            };
        }
        else{
            next=-next; //
            delete next;
            }
    }


Greska je : void value not ignores as it ought be
Sta to znaci?
Seven deadly sins
Seven ways to win
Seven holy paths to hell
And your trip begins

Seven downward slopes
Seven bloodied hopes
Seven are your burning fires,
Seven your desires...
27.02.2005. u 23:31 

Dragi Tata

Član broj: 1958
Poruke: 3885
*.bos.east.verizon.net.

Sajt: www.novetehnologije.com


Profil

icon Re: Problem sa brisanjem stabla28.02.2005. u 00:30
Funkcija pop() ne vraća vrednost, odnosno deklarisana je kao void. Pogledaj definiciju šablon klase std::stack.

U principu, moraćeš da koristiš funkciju top() da dobiješ element, pa onda pop() da ga izbrišeš sa steka. Slažem se da je malo čudno, ali tako je...
28.02.2005. u 00:30 

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 496
195.252.106.*



Profil

icon Re: Problem sa brisanjem stabla28.02.2005. u 00:37
Resio sam, ali vidim da me je DT pretekao sa odgovorom. Hvala!
Ako moze jos jedno pitanje: Ovaj red:
Code:
next=-next;
Zasto to ne radi? zasto pokazivac ne moze da bude negativan. Resio sam problem, ali mi deluje kao strasno lose resenje :
Code:
temp = -(int)next;
next=(drvo*)temp;

Imam utisak da se ovde nesto gubi, mada za sada ne primecujem, posto program radi.
Seven deadly sins
Seven ways to win
Seven holy paths to hell
And your trip begins

Seven downward slopes
Seven bloodied hopes
Seven are your burning fires,
Seven your desires...
28.02.2005. u 00:37 

filmil
Filip Miletić
Oce Technologies B.V., inženjer hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


Profil

icon Re: Problem sa brisanjem stabla28.02.2005. u 09:32
Citat:
Zasto to ne radi? zasto pokazivac ne moze da bude negativan. Resio sam problem, ali mi deluje kao
Pokazivač nije broj, pa ne možeš da očekuješ da s njim rade aritmetičke operacije. To što igrom slučaja se pointeri na tvojoj konkretnoj mašini prikazuju kao brojevi nema nikakvog značaja.

Ne možeš sabirati pointere niti ih oduzimati, osim naravno ako ne preopteretiš operatore. Možeš da sabereš pointer sa celim brojem i tada je semantika: p + i == p[ i ]. (pretpostavi da je p pointer a i ceo broj).

Pošto nisi napisao koja se greška javlja ne mogu ništa više da iskomentarišem.

f
28.02.2005. u 09:32 

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 496
*.yubc.net.



Profil

icon Re: Problem sa brisanjem stabla28.02.2005. u 11:08
Citat:
filmil:To što igrom slučaja se pointeri na tvojoj konkretnoj mašini prikazuju kao brojevi nema nikakvog značaja.

Pošto nisi napisao koja se greška javlja ne mogu ništa više da iskomentarišem.
f

Sasvim dovoljno. Zanima me samo da li ce da radi onaj kod koji sam postavio, ako umesto
Code:
next=-next;
stavim
Code:
temp = -(int)next;
next=(drvo*)temp;


Seven deadly sins
Seven ways to win
Seven holy paths to hell
And your trip begins

Seven downward slopes
Seven bloodied hopes
Seven are your burning fires,
Seven your desires...
28.02.2005. u 11:08 

_Super_Ellite_Bug_
Novi Sad, konacno!!!

Član broj: 41318
Poruke: 145
*.nat-pool.nsad.sbb.co.yu.

Sajt: www.searchlores.org


Profil

icon Re: Problem sa brisanjem stabla28.02.2005. u 11:29
Nad pointerima istog tipa koji ukazuju na isti niz moze biti izvedena operacija utvrdjivanje distance u trenutnom memorijskom modelu kao ptrdiff_t tip:
Code:

int niz[10], *q = niz, *r = niz+10;
ptrdiff_t diff1 = q-r, diff2 = r-q;  

//kao rezultate(distance) imacemo :diff1== -10, diff2 = +10
ISO/IEC JTC1/SC22/WG14-ISO/IEC 9899:1999
28.02.2005. u 11:29 

filmil
Filip Miletić
Oce Technologies B.V., inženjer hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


Profil

icon Re: Problem sa brisanjem stabla28.02.2005. u 11:46
Citat:
Sasvim dovoljno. Zanima me samo da li ce da radi onaj kod koji sam postavio, ako umesto
bug je napisao, ali nije naglasio: pointerska aritmetika ima smisla samo ako pointeri pokazuju na isti niz. U bilo kom drugom slučaju rezultat je nedefinisan. (Mislim da ovaj uslov ima veze i sa uslovom kog postavlja C, da elementi nizova moraju da budu smešteni u uzastopne memorijske lokacije.) To uključuje i slučajeve tipa p[-1] itd.

Ako dobro poznaješ mašinu na kojoj radiš, možeš da kroz konverzije isforsiraš da ti kod radi ono što si hteo, ali će to onda raditi samo na tvojoj mašini. Možda je bolje da opišeš šta u stvari želiš da postigneš, mora da postoji neki manje „bodljikav“  način da se uradi. (Verovatno stoji u kodu, nisam gledao, sorry.)

f
28.02.2005. u 11:46 

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 496
195.252.106.*



Profil

icon Re: Problem sa brisanjem stabla28.02.2005. u 16:00
Ovo je kod za obilazak (brisanje) stabla u postorderu. Treba da svaki cvor stavim na stek 2 puta. Taj cvor posecujem samo jednom, kada ga drugi put uzimam sa steka. Da bih razlikovao ta dva slucaja, stavio sam da u drugom stavljanju na stek pokazivac bude negativan. Tako su me ucili, ali u pseudo kodu. :O) Zanima me da li je ovo ispravno!
Seven deadly sins
Seven ways to win
Seven holy paths to hell
And your trip begins

Seven downward slopes
Seven bloodied hopes
Seven are your burning fires,
Seven your desires...
28.02.2005. u 16:00 

[es] :: C programiranje :: Problem sa brisanjem stabla

[ Pregleda: 1171 | Odgovora: 7 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.