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

problem sa povezanim listama i primer

[es] :: C/C++ programiranje :: problem sa povezanim listama i primer

[ Pregleda: 2192 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gogi100
Goran Ljubic

Član broj: 40722
Poruke: 940
*.teleportgroup.net.



+3 Profil

icon problem sa povezanim listama i primer30.11.2004. u 11:37 - pre 176 meseci
Poceo sam da citam knjigu C++ za 21 dan od SAMS-a i stigao sam do jednog primera iz knjige koji opisuje temu povezanih lista,ali mi nije bas najjasniji,pa ako moze neko objasnjenje i neki jednostavniji primer.Kod je sledeci:
Code:

#include<iostream.h>
class CAT
{
    public:
      CAT(){itsAge=1;}
       CAT(int age):itsAge(age){}
       ~CAT(){};
       int GetAge(){return itsAge;}
     private:
       int itsAge;
};
class Node
{
    public:
      Node (CAT*);
      ~Node();
      void SetNext(Node*node){itsNext=node;}
      Node*GetNext()const{return itsNext;}
      CAT*GetCat()const{return itsCat;}
      void Insert(Node*);
      void Display();
    private:
      CAT*itsCat;
      Node*itsNext;
};
Node::Node(CAT*pCat):
itsCat(pCat),itsNext(0){}

Node::~Node()
{
     cout<<"Deleting node...\n";
     delete itsCat;
     itsCat=0;
     delete itsNext;
     itsNext=0;
}

void Node::Insert(Node*newNode) //moze li objasnjenje ove funkcije?
{
     if(!itsNext)    //ovo mi nije jasno?
       itsNext=newNode; //i ovo?
     else
       int NextCatsAge=itsNext->GetCat()->GetAge();
       int NewAge=newNode->GetCat()->GetAge();
       int ThisNodeAge=itsCat->GetAge(0);

      if(NewAge>=ThisNodeAge && NewAge<NextCatsAge) //nije mi jasan ovaj uslov
       newNode->SetNext(itsNext);
       itsNext=newNode;
}
      else
       itsNext->Insert(newNode);
}
void Node::Display()

    if(itsCat->GetCat()>0)
     {
       cout<<"MyCat is: ";
       cout<<itsCat->GetAge()<<"years old\n";
     }
    if(itsNext)
     itsNext->Diplay();
}

int main()
{
    Node*pNode=0;
    CAT*pCat=new CAT(0) //u knjizi pise da je ovo lazni objekat zasto?
    int age;
    Node*pHead=new Node(pCat); //zasto se formira ovaj pokazivac na Node?
    while(1)
      {
       cout<<"New cat's age? (0 to quit): ";
       cin>>age;
         if(!age)
           break;
          pCat= new CAT(age);
          pNode=new Node (pCat);
          pHead->Insert(pNode);
        }
   pHead->Display();
   delete pHead;
    cout<<"Exiting...\n\n";
   return 0;
}


[Ovu poruku je menjao Dragi Tata dana 30.11.2004. u 20:50 GMT+1]
 
Odgovor na temu

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


+3 Profil

icon Re: problem sa povezanim listama i primer30.11.2004. u 12:24 - pre 176 meseci
Ladno smo imali isti taj primer pre nekoliko meseci. Probaj da pretražiš forum.

f
 
Odgovor na temu

gogi100
Goran Ljubic

Član broj: 40722
Poruke: 940
*.teleportgroup.net.



+3 Profil

icon Re: problem sa povezanim listama i primer30.11.2004. u 19:27 - pre 176 meseci
pa nije isti primer,ovde su u pitanju klase,a tamo se radi o strukturama.Molio bih za objasnjenje ovog primera,ako moze.
 
Odgovor na temu

vlada_dj
Vladimir Djokic
Beograd

Član broj: 39483
Poruke: 9
*.proxy.astra-net.com.



Profil

icon Re: problem sa povezanim listama i primer30.11.2004. u 19:39 - pre 176 meseci
Ne znam da li si u mogucnosti, ali preporucio bih ti da prvo procitas neku knjigu koja se bavi strukturama podataka (npr. od prof. Mila Tomasevica) pa onda da se zanimas realizacijom koda u C++ (ili jos bolje prvo u C-u). Bice ti mnogo jasnije.
Probaj sa knjigom "OOP u jeziku C++" od prof. Miliceva.
 
Odgovor na temu

blaza
n/a

Član broj: 961
Poruke: 743
213.244.197.*



+3 Profil

icon Re: problem sa povezanim listama i primer30.11.2004. u 19:43 - pre 176 meseci
Razlika izmedju reci 'class' i 'structure' je u tome sto su elementi klase koji se definisu prvom recju po defaultu privatni, dok su u drugom slucaju isti po defaultu javni.
O_o
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: problem sa povezanim listama i primer30.11.2004. u 19:48 - pre 176 meseci
I ne samo članovi. Npr:

Code:

class izvedena : bazna //privatno nasledjivanje
{};

struct izvedena : bazna // javno nasledjivanje
{};


 
Odgovor na temu

gogi100
Goran Ljubic

Član broj: 40722
Poruke: 940
*.teleportgroup.net.



+3 Profil

icon Re: problem sa povezanim listama i primer01.12.2004. u 09:15 - pre 176 meseci
Gde mogu naci tu knjigu "OOP u jeziku C++" od prof. Miliceva?
 
Odgovor na temu

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


+3 Profil

icon Re: problem sa povezanim listama i primer01.12.2004. u 11:24 - pre 176 meseci
Prodaju je (bar) skriptarnica ETF u Beogradu i Mikro knjiga. Mada je, po meni, prilično bespotrebno teška za čitanje.

Pogledaj top teme: http://www.elitesecurity.org/tema/77535
f
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.vdial.verat.net.



Profil

icon Re: problem sa povezanim listama i primer02.12.2004. u 18:20 - pre 176 meseci
Kako tema nije obrisana odnosno zakljucana, a u medjuvremenu su se dodale poruke, pokusacu da objasnim malo detaljnije (iako je vec bilo tema o slicnom problemu).

Po mom skromnom misljenju, "Naucite C++ za 21 dan" zaista nije losa knjiga za pocetnike, medjutim konkretno, povezana lista nije bas najbolje objasnjena u toj knizi (odnosno sta se tacno desava u funkcijama clanicama), tako da ako ipak shvatis kako one rade (u ovim konkretnim primerima) onda ti je moj savet da nastavis sa tom knjigom, umesto da u toku citanja sa pola procitane knjige "skaces" na neku drugu, pa s druge na trecu itd.

U primeru koji si naveo (verovatno greskom) zaboravio si na nekim mestima da dodas zagrade - {}. U svakom slucaju, savetovao bih da pri pisanju posebno obratis paznju na njih _pogotovu_ u "if - else" blokovima, jer ces tako nastale greske, u pocetku, tesko da otkrivas (kompajler najcesce, nece prijavljivati tako nastale "greske").
Code:

void Node::Insert(Node* newNode)
{
   /* Ako je cvor prvi i poslednji, odnosno ne pokazuje (pokazivac 
      "itsNext) na neki sledeci cvor, onda se ovaj (newNode) dodaje.
      Da li "itsNext" pokazuje na neki cvor ili ne proverava se u (if-else)
      uslovu. U C++-u 0 vazi za "netacno" (false) a sve druge vrednosti za
      "tacno" (true), stoga, ako pokazivac "itsNext" pokazuje na neki cvor
      on sadrzi "memorijsku adresu" koja nije 0 - "netacno" (0 je
      rezervisana) vec "tacno", a operatorom negacije (!) "!tacno" dobija
      se "netacno", cime se prelazi u "else" blok". Ako je pak "itsNext" 0
      - "netacno", odnosno ne pokazuje na neki cvor, negacijom "!netacno"
      se dobija "tacno" i nastavlja se izvrsavanje u "if" bloku.
      U samom konstruktoru se odmah pri kreiranju objekta, pokazivac
      "itsNext" inicijalizuje na 0 - "netacno", jer na pocetku on ne
      pokazuje na neki sledeci cvor - lista je prazna. */
   if (!itsNext) 
      itsNext = newNode;
   else
   {
      int NextCatsAge = itsNext->GetCat()->GetAge();
      int NewAge = newNode->GetCat()->GetAge();
      int ThisNodeAge = itsCat->GetAge();
      
      /* "NextCatsAge" sadrzi broj godina macketine na koju pokazuje
         "itsNext" tekuceg cvora, "NewAge" sadrzi broj godina nove macketine
     (newNode) koji treba dodati u listu, dok "ThisNodeAge" sadrzi broj
     godina "tekuce" macketine.
     Sledeci uslov, recima, ispituje: ako je broj godina nove macketine
     veci ili jednak broju godina tekuce macketine _I_ manji od broja
     godina sledece macketine u listi, dodaj novu macketinu
     _izmedju_trenutno_ tekuce i sledece macketine. */
      if (NewAge >= ThisNodeAge && NewAge < NextCatsAge)
      {
         newNode->SetNext(itsNext);
     itsNext = newNode;
      }
      else
         itsNext->Insert(newNode);
   }
}
 
Odgovor na temu

[es] :: C/C++ programiranje :: problem sa povezanim listama i primer

[ Pregleda: 2192 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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