[ Sifrara @ 24.01.2010. 02:41 ] @
Da li neko moza da mi ukratko pojasni sta je to red i kako se ubacuju elemnti na kraj a izbacuju sa pocetka,ako nije problem moze neki najprostiji primer sa kodom...
[ GORSHTAK @ 24.01.2010. 17:03 ] @
Jel misliš na jednostruko povezane liste?
Evo nečeg u tom slučaju

Code:

typedef struct lista{
int broj;
struct lista* sledeci;
} Lista;

Lista *pocetak, *kraj, *novi, *za_brisanje;

//   ..........

//  dodavanje na kraj
kraj->sledeci = novi;
kraj = novi;

//  brisanje prvog
za_brisanje = pocetak;
pocetak = pocetak->sledeci;
free(za_brisanje);


Pročitaj ovo dole, ukratko, red je princip da prvi element koji se pojavi u memoriji bude prvi obrađen (FIFO), suprotno je stek
http://en.wikipedia.org/wiki/Stack_(data_structure)
http://en.wikipedia.org/wiki/Queue_(data_structure)

prekopiraj celu liniju, nije mi pošlo za rukom da cela linija uđe u url
[ Sifrara @ 24.01.2010. 17:54 ] @
Evo npr..Mozes li da mi opises ukratko svaki kod..

typedef struct red {
int inf;
sruct red* next;
} CVOR;

void push (CVOR **vrh,int vrednost) {
CVOR *novi;
novi=(CVOR*)malloc(sizeof(CVOR)); // do ovoga sve kapiram
novi->inf=vrednost;
novi->next=*vrh;
*vrh=novi;
}
int pop (CVOR **vrh) {
CVOR novi1;
int pod;
if (*vrh==NULL) {
return -1;}
novi1=*vrh;
*vrh=novi1->next;
free(novi1);
return pod;
}
[ Sifrara @ 24.01.2010. 17:55 ] @
Jos sam zaboravio da stavim kop pop funkcije da je pod=(*vrh)->inf;
[ GORSHTAK @ 25.01.2010. 12:15 ] @
Ovo je stek

Code:

typedef struct red {
int inf;
sruct red* next;
} CVOR;

void push (CVOR **vrh,int vrednost) {
CVOR *novi;
novi=(CVOR*)malloc(sizeof(CVOR)); // ******
novi->inf=vrednost;   //  ovo ti je valjda jasno, upisujes vrednost u nov cvor
novi->next=*vrh;   //  sa ovim vrh nadovezujes na nov cvor
*vrh=novi;    //   posto je vrh stavljen na kraj novog, sa ovim novi postaje vrh
}
int pop (CVOR **vrh) {
CVOR novi1;
int pod;
if (*vrh==NULL) {    //  ovo je klasicno pitanje, ako cvor ne postoji, tj. nema nikakvih vrednosti
return -1;}             //  onda zavrsava 
novi1=*vrh;            //  novi cvor pokazuje na vrh, tj. novi1 i vrh su jedno te isto 
pod=(*vrh)->inf;     //  naravno bez ovog nema smisla raditi dalje :)
*vrh=novi1->next;   //  vrh moras da sacuvas i zato ga pomeras na kraj novog
free(novi1);            //  ovim brises samo novi, da nisi uradio onu gore komandu, izgubio bi celu listu
return pod;
}


za red ti treba drugacija push f-ja:

Code:

void push (CVOR **vrh,int vrednost) {
CVOR *novi, *trazi_kraj;
novi=(CVOR*)malloc(sizeof(CVOR)); // ******
novi->inf=vrednost;   

//  odavde pocinju razlike
trazi_kraj = *vrh;
while (trazi_kraj->next != NULL)   //  moras da krenes od pocetka da bi pronasao poslednji cvor
     trazi_kraj=trazi_kraj->next;    //  i svaki put setas pokazivac, zato bi bilo zgodno da imas pokazivac koji ce ti uvek govoriti gde je kraj

trazi_kraj->next=novi;      //  nov cvor stavljas na kraj liste

}


Nisam proveravao da li mi je tacan kod, sad nemam vremena za to