Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
markotron Forumaš(ica)
Pridružen/a: 26. 10. 2008. (12:07:29) Postovi: (95)16
Spol:
Lokacija: Umag
|
|
[Vrh] |
|
Luuka Forumaš(ica)
Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol:
Lokacija: Hakuna Matata
|
Postano: 13:29 ned, 25. 10. 2009 Naslov: Re: Implementacija QUEUE, STACK, LIST |
|
|
[quote="markotron"]
Pokušao sam napraviti kao header file ali nisam uspio. Ne znam sto trebam napraviti. U ATP_STACK.h sam napisao sve deklaracije, ali ne znam što sad moram napravit da to dalje radi. Uvijek mi javlja linker error. Ako netko zna neka pomaže. :D Hvala
[/quote]
U devcpp-u:
napravit project,
napravit .h sa deklaracijama, i prototipovima fja,
ono što imaš u .h maknut iz .c (implementacije), da se ne kolje (npr typedef i slično)
u program sa mainom i u tvoju implementaciju includat .h napravljen gore
sva 3 filea ubacit u project
na ubuntuu:
sve isto kod izrade .h filea, i onda kod kompajliranja navest sve fileove koji trebaju, dakle nešto oblika:
gcc main.c implementacija.c -o p
markotron (napisa): |
Pokušao sam napraviti kao header file ali nisam uspio. Ne znam sto trebam napraviti. U ATP_STACK.h sam napisao sve deklaracije, ali ne znam što sad moram napravit da to dalje radi. Uvijek mi javlja linker error. Ako netko zna neka pomaže. Hvala
|
U devcpp-u:
napravit project,
napravit .h sa deklaracijama, i prototipovima fja,
ono što imaš u .h maknut iz .c (implementacije), da se ne kolje (npr typedef i slično)
u program sa mainom i u tvoju implementaciju includat .h napravljen gore
sva 3 filea ubacit u project
na ubuntuu:
sve isto kod izrade .h filea, i onda kod kompajliranja navest sve fileove koji trebaju, dakle nešto oblika:
gcc main.c implementacija.c -o p
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy
|
|
[Vrh] |
|
Zvone Forumaš(ica)
Pridružen/a: 01. 07. 2003. (13:09:44) Postovi: (9D)16
|
|
[Vrh] |
|
Tygy Forumaš(ica)
Pridružen/a: 22. 11. 2008. (15:27:08) Postovi: (102)16
|
|
[Vrh] |
|
markotron Forumaš(ica)
Pridružen/a: 26. 10. 2008. (12:07:29) Postovi: (95)16
Spol:
Lokacija: Umag
|
|
[Vrh] |
|
markotron Forumaš(ica)
Pridružen/a: 26. 10. 2008. (12:07:29) Postovi: (95)16
Spol:
Lokacija: Umag
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 18:35 sub, 31. 10. 2009 Naslov: |
|
|
Ne, [tt]free()[/tt] samo oslobodi memoriju. Ako malo pogledas, poziv je
[tt]free(ptr);[/tt]
C-ovske funkcije mogu mijenjati ono na sto [tt]ptr[/tt] pokazuje, ali ne mogu mijenjati sam [tt]ptr[/tt] (prijenos po vrijednosti, a ne po referenci), ne? ;)
Ne, free() samo oslobodi memoriju. Ako malo pogledas, poziv je
free(ptr);
C-ovske funkcije mogu mijenjati ono na sto ptr pokazuje, ali ne mogu mijenjati sam ptr (prijenos po vrijednosti, a ne po referenci), ne?
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
tidus Forumaš(ica)
Pridružen/a: 16. 02. 2009. (12:47:59) Postovi: (A5)16
Spol:
|
Postano: 19:27 sub, 31. 10. 2009 Naslov: |
|
|
[quote="vsego"]Ne, [tt]free()[/tt] samo oslobodi memoriju. Ako malo pogledas, poziv je
[tt]free(ptr);[/tt]
C-ovske funkcije mogu mijenjati ono na sto [tt]ptr[/tt] pokazuje, ali ne mogu mijenjati sam [tt]ptr[/tt] (prijenos po vrijednosti, a ne po referenci), ne? ;)[/quote]
Nisam baš shvatio. Na što će pokazivati ptr1 i ptr2 nakon free()?
vsego (napisa): | Ne, free() samo oslobodi memoriju. Ako malo pogledas, poziv je
free(ptr);
C-ovske funkcije mogu mijenjati ono na sto ptr pokazuje, ali ne mogu mijenjati sam ptr (prijenos po vrijednosti, a ne po referenci), ne? |
Nisam baš shvatio. Na što će pokazivati ptr1 i ptr2 nakon free()?
|
|
[Vrh] |
|
markotron Forumaš(ica)
Pridružen/a: 26. 10. 2008. (12:07:29) Postovi: (95)16
Spol:
Lokacija: Umag
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 21:17 sub, 31. 10. 2009 Naslov: |
|
|
Nakon [tt]free(ptr1)[/tt], [tt]ptr1[/tt] pokazuje na isto na sto je pokazivao i prije, ali ta memorija vise ne pripada programu. Ti mozes nesto unutra zapisati, no ne smijes, jer to u bilo kojem trenu moze drugi program izmijeniti.
Zasto ti nakon [tt]free(ptr1)[/tt] bude [tt]*ptr1 == 0[/tt], ne znam. Moze biti i do operacijskog sustava; standard, koliko znam, nista ne kaze o tome, niti je bitno sto se desi s tom vrijednoscu (jer ju ionako [b]ne smijes[/b] koristiti; vise ne "pripada" tvom programu!).
Ja sam malo experimentirao i stvarno nekad ispadne nula, ali ispadala mi je i slucajna vrijednost. Vidi ovdje (isprobano na Linuxu):
$ echo "Program:"; cat t.c; echo "Output programa:"; gcc t.c && ./a.out
Program:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *ptr1, *ptr2, *ptr3;
printf("1. (%u, %u, %u) -> (%d, %d, %d)\n", ptr1, ptr2, ptr3, *ptr1, *ptr2, *ptr3);
ptr1 = (int*)malloc(sizeof(int)); *ptr1 = 13;
ptr2 = (int*)malloc(sizeof(int)); *ptr2 = 17;
ptr3 = (int*)malloc(sizeof(int)); *ptr3 = 19;
printf("2. (%u, %u, %u) -> (%d, %d, %d)\n", ptr1, ptr2, ptr3, *ptr1, *ptr2, *ptr3);
free(ptr1); free(ptr2); free(ptr3);
printf("3. (%u, %u, %u) -> (%d, %d, %d)\n", ptr1, ptr2, ptr3, *ptr1, *ptr2, *ptr3);
return 0;
}
Output programa:
1. (3220618248, 134514057, 3741392) -> (-1074348952, -14632051, 1474660693)
2. (156815368, 156815384, 156815400) -> (13, 17, 19)
3. (156815368, 156815384, 156815400) -> (0, 156815360, 156815376)[/code]
Nakon free(ptr1), ptr1 pokazuje na isto na sto je pokazivao i prije, ali ta memorija vise ne pripada programu. Ti mozes nesto unutra zapisati, no ne smijes, jer to u bilo kojem trenu moze drugi program izmijeniti.
Zasto ti nakon free(ptr1) bude *ptr1 == 0, ne znam. Moze biti i do operacijskog sustava; standard, koliko znam, nista ne kaze o tome, niti je bitno sto se desi s tom vrijednoscu (jer ju ionako ne smijes koristiti; vise ne "pripada" tvom programu!).
Ja sam malo experimentirao i stvarno nekad ispadne nula, ali ispadala mi je i slucajna vrijednost. Vidi ovdje (isprobano na Linuxu):
$ echo "Program:"; cat t.c; echo "Output programa:"; gcc t.c && ./a.out
Program:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *ptr1, *ptr2, *ptr3;
printf("1. (%u, %u, %u) → (%d, %d, %d)\n", ptr1, ptr2, ptr3, *ptr1, *ptr2, *ptr3);
ptr1 = (int*)malloc(sizeof(int)); *ptr1 = 13;
ptr2 = (int*)malloc(sizeof(int)); *ptr2 = 17;
ptr3 = (int*)malloc(sizeof(int)); *ptr3 = 19;
printf("2. (%u, %u, %u) → (%d, %d, %d)\n", ptr1, ptr2, ptr3, *ptr1, *ptr2, *ptr3);
free(ptr1); free(ptr2); free(ptr3);
printf("3. (%u, %u, %u) → (%d, %d, %d)\n", ptr1, ptr2, ptr3, *ptr1, *ptr2, *ptr3);
return 0;
}
Output programa:
1. (3220618248, 134514057, 3741392) → (-1074348952, -14632051, 1474660693)
2. (156815368, 156815384, 156815400) → (13, 17, 19)
3. (156815368, 156815384, 156815400) → (0, 156815360, 156815376)[/code]
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
piko Forumaš(ica)
Pridružen/a: 09. 10. 2009. (18:20:25) Postovi: (26)16
|
Postano: 23:35 sub, 31. 10. 2009 Naslov: |
|
|
kako je u naslovu QUEUE imam par pitanja o njemu, pa da ne otvaram novi topic...
zbunjuje me, ako cijelu implementaciju treba napraviti točno kao u [url=http://web.math.hr/nastava/spa/files/salabahter.pdf]šalabahteru[/url], onda za QUEUE imamo 2 tipa podataka i 5 funkcija.
ta 2 tipa podatka su [tt]elementtype[/tt] i [tt]QUEUE[/tt]. i želimo implementirati QUEUE preko vezane liste. ali na predavanjima / u skripti se za ovu implementaciju ne koriste dva, nego TRI tipa podataka: elementtype, celltype i QUEUE:
[code:1]typedef int elementtype;
typedef struct cell_tag {
elementtype element;
struct cell_tag *next;
} celltype;
typedef struct {
celltype *front, *rear;
} QUEUE; [/code:1]
moje je pitanje: ako sve moramo napraviti pomoću 2 tipa podataka i 5 funkcija, je li uvođenje ovakvih "pomoćnih" tipova podataka u redu?
2.) znači elementtype ne može biti gornji struct nego jedino int, double, char, itd? ili se i struktura može uzeti da je elementtype, a konačan niz tih struktura čini QUEUE?
jer ako bi to bilo moguće, onda bih zaista mogao imati samo dva tipa podatka, elementtype i QUEUE:
[code:1]
typedef struct cell_tag {
int element;
struct cell_tag *next;
} elementtype;
typedef struct {
elementtype *front, *rear;
} QUEUE; [/code:1]
e sad me zanima je li ovo moguće ili elementtype može biti samo int, double itd... :?:
pitanje je banalno ali sam ga htiJo što preciznije formulirat :)
i još me zanima ovo: ako funkcija/program mora raditi samo sa tipovima podataka i sa funkcijama iz a.t.p.-a, može li ipak primiti neki tip podataka koji nije ni elementtype ni QUEUE? npr. ako u program moram poslati matricu [tt]mat[/tt], ili sad izmišljam, neki double [tt]x[/tt], može li funkcija biti oblika
[code:1]QUEUE fja(elementtype E, char **mat, QUEUE Q, double x)[/code:1]
ili svi podaci moraju biti ili tipa elementtype ili QUEUE :?:
na službenoj stranici piše:
[quote][size=14][b]Svaka druga funkcija (uključujući main, (...)) smije prilikom korištenja tog atp-a koristiti isključivo funkcije iz definicije atp-a[/b][/size] [/quote]
da li bi bottom line onda bio: smiju se koristiti SAMO [i]funkcije[/i] iz a.t.p.-a, a smiju se koristiti i [i]tipovi podataka[/i] koji nisu u a.t.p.-u?
zahvaljujem na strpljenju :D
kako je u naslovu QUEUE imam par pitanja o njemu, pa da ne otvaram novi topic...
zbunjuje me, ako cijelu implementaciju treba napraviti točno kao u šalabahteru, onda za QUEUE imamo 2 tipa podataka i 5 funkcija.
ta 2 tipa podatka su elementtype i QUEUE. i želimo implementirati QUEUE preko vezane liste. ali na predavanjima / u skripti se za ovu implementaciju ne koriste dva, nego TRI tipa podataka: elementtype, celltype i QUEUE:
Kod: | typedef int elementtype;
typedef struct cell_tag {
elementtype element;
struct cell_tag *next;
} celltype;
typedef struct {
celltype *front, *rear;
} QUEUE; |
moje je pitanje: ako sve moramo napraviti pomoću 2 tipa podataka i 5 funkcija, je li uvođenje ovakvih "pomoćnih" tipova podataka u redu?
2.) znači elementtype ne može biti gornji struct nego jedino int, double, char, itd? ili se i struktura može uzeti da je elementtype, a konačan niz tih struktura čini QUEUE?
jer ako bi to bilo moguće, onda bih zaista mogao imati samo dva tipa podatka, elementtype i QUEUE:
Kod: |
typedef struct cell_tag {
int element;
struct cell_tag *next;
} elementtype;
typedef struct {
elementtype *front, *rear;
} QUEUE; |
e sad me zanima je li ovo moguće ili elementtype može biti samo int, double itd...
pitanje je banalno ali sam ga htiJo što preciznije formulirat
i još me zanima ovo: ako funkcija/program mora raditi samo sa tipovima podataka i sa funkcijama iz a.t.p.-a, može li ipak primiti neki tip podataka koji nije ni elementtype ni QUEUE? npr. ako u program moram poslati matricu mat, ili sad izmišljam, neki double x, može li funkcija biti oblika
Kod: | QUEUE fja(elementtype E, char **mat, QUEUE Q, double x) |
ili svi podaci moraju biti ili tipa elementtype ili QUEUE
na službenoj stranici piše:
Citat: | Svaka druga funkcija (uključujući main, (...)) smije prilikom korištenja tog atp-a koristiti isključivo funkcije iz definicije atp-a |
da li bi bottom line onda bio: smiju se koristiti SAMO funkcije iz a.t.p.-a, a smiju se koristiti i tipovi podataka koji nisu u a.t.p.-u?
zahvaljujem na strpljenju
|
|
[Vrh] |
|
Lafiel Forumaš(ica)
Pridružen/a: 26. 09. 2007. (09:56:59) Postovi: (153)16
Spol:
|
Postano: 13:50 čet, 12. 11. 2009 Naslov: |
|
|
Čitam sad malo skriptu; još sam pri početku, implementacija liste preko pointera (aka vezana lista), str. 10 i 11.
Funkcija INSERT(x, p) bi trebala ubaciti element x na poziciju p, ali i po samoj funkciji, i po dijagramu se (po meni) to ubacuje na poziciju p+1 (tj. p->next). Da se poslužim oznakama s dijagrama, element a i dalje ostaje na poziciji p, element x dolazi nakon njega, a nakon x dođe b. Ista stvar s DELETE. Što sam previdjela? :-k
Čitam sad malo skriptu; još sam pri početku, implementacija liste preko pointera (aka vezana lista), str. 10 i 11.
Funkcija INSERT(x, p) bi trebala ubaciti element x na poziciju p, ali i po samoj funkciji, i po dijagramu se (po meni) to ubacuje na poziciju p+1 (tj. p->next). Da se poslužim oznakama s dijagrama, element a i dalje ostaje na poziciji p, element x dolazi nakon njega, a nakon x dođe b. Ista stvar s DELETE. Što sam previdjela?
_________________ Weit von hier fällt Gold von den Sternen
|
|
[Vrh] |
|
fireball Forumaš(ica)
Pridružen/a: 07. 10. 2005. (18:49:17) Postovi: (4AB)16
Spol:
Lokacija: s rukom u vatri i nogom u grobu
|
Postano: 20:22 čet, 12. 11. 2009 Naslov: |
|
|
@piko: zanci ovako za prvi dio
elementtype je tip elementa, int, double... ili moze bit i neka struktura kao drugi red, sto, stablo, u prijevodu to je onaj tip elementa koji cuvas u stablu.
celltype opisuje strukturu celije u kojoj cuvas elemente, tj ovo gore navedeno i pokazivac na dljedeci u nizu elemenata (naime red je definiran kao takav)
a red je red :) FIFO lista, tj to je lista koja sdrzi elemente u celltypu :)
valjda kuzis sta pricam :)
p.s. ovo pisem napamet jer sam lijen pogledat skritu pa to ipak malo prouci ali mislim da nisam fulao, a ako jesam nadam se da ce me neka dobra dusa ispravit
@piko: zanci ovako za prvi dio
elementtype je tip elementa, int, double... ili moze bit i neka struktura kao drugi red, sto, stablo, u prijevodu to je onaj tip elementa koji cuvas u stablu.
celltype opisuje strukturu celije u kojoj cuvas elemente, tj ovo gore navedeno i pokazivac na dljedeci u nizu elemenata (naime red je definiran kao takav)
a red je red FIFO lista, tj to je lista koja sdrzi elemente u celltypu
valjda kuzis sta pricam
p.s. ovo pisem napamet jer sam lijen pogledat skritu pa to ipak malo prouci ali mislim da nisam fulao, a ako jesam nadam se da ce me neka dobra dusa ispravit
|
|
[Vrh] |
|
Zildyan Forumaš(ica)
Pridružen/a: 28. 07. 2008. (13:41:39) Postovi: (20)16
|
Postano: 22:04 čet, 12. 11. 2009 Naslov: |
|
|
[quote="Lafiel"]Čitam sad malo skriptu; još sam pri početku, implementacija liste preko pointera (aka vezana lista), str. 10 i 11.
Funkcija INSERT(x, p) bi trebala ubaciti element x na poziciju p, ali i po samoj funkciji, i po dijagramu se (po meni) to ubacuje na poziciju p+1 (tj. p->next). Da se poslužim oznakama s dijagrama, element a i dalje ostaje na poziciji p, element x dolazi nakon njega, a nakon x dođe b. Ista stvar s DELETE. Što sam previdjela? :-k[/quote]
..da je pozicija elementa a(p) pokazivac p koji pokazuje celiju koja sadrzi pokazivac na a(p)..
onda p pokazuje na celiju u kojoj je zapisan a(p-1) jer ona sadrzi i pokazivac na a(p) a onda se lako zakljucuje da ako zelis ubaciti element na poziciju p da moras ga zapisati u p->next->elements
Lafiel (napisa): | Čitam sad malo skriptu; još sam pri početku, implementacija liste preko pointera (aka vezana lista), str. 10 i 11.
Funkcija INSERT(x, p) bi trebala ubaciti element x na poziciju p, ali i po samoj funkciji, i po dijagramu se (po meni) to ubacuje na poziciju p+1 (tj. p→next). Da se poslužim oznakama s dijagrama, element a i dalje ostaje na poziciji p, element x dolazi nakon njega, a nakon x dođe b. Ista stvar s DELETE. Što sam previdjela? |
..da je pozicija elementa a(p) pokazivac p koji pokazuje celiju koja sadrzi pokazivac na a(p)..
onda p pokazuje na celiju u kojoj je zapisan a(p-1) jer ona sadrzi i pokazivac na a(p) a onda se lako zakljucuje da ako zelis ubaciti element na poziciju p da moras ga zapisati u p→next→elements
|
|
[Vrh] |
|
malena Forumaš(ica)
Pridružen/a: 27. 03. 2009. (16:43:42) Postovi: (62)16
Spol:
Lokacija: ...
|
|
[Vrh] |
|
Gino Forumaš(ica)
Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
komaPMF Forumaš(ica)
Pridružen/a: 22. 11. 2007. (10:23:41) Postovi: (E6)16
Spol:
Lokacija: Over the roof
|
|
[Vrh] |
|
Milojko Forumaš(ica)
Pridružen/a: 07. 11. 2008. (14:57:52) Postovi: (453)16
Spol:
Lokacija: Hilbertov hotel
|
Postano: 22:56 čet, 12. 11. 2009 Naslov: |
|
|
1.
(A-B+C)/A+B-C+A (mislim dab se to tak pročitalo)
(A+B-C)/A-B+C+"fali mi operand"
ovo što si napisala u postfiksu je
AB-C+A/B+CA+-
[url=http://degiorgi.math.hr/forum/viewtopic.php?t=14065]JANKRI-ev post[/url]
prvo zagrada na stog, ispišem A, stavim - na stog, ispišem B, čitam +, stog nije prazan, praznim ga i ispišem - te stavljam + na stog, čitam C i ispišem ga, čitam ) i praznim stog, dakle samo +, .....
1.
(A-B+C)/A+B-C+A (mislim dab se to tak pročitalo)
(A+B-C)/A-B+C+"fali mi operand"
ovo što si napisala u postfiksu je
AB-C+A/B+CA+-
JANKRI-ev post
prvo zagrada na stog, ispišem A, stavim - na stog, ispišem B, čitam +, stog nije prazan, praznim ga i ispišem - te stavljam + na stog, čitam C i ispišem ga, čitam ) i praznim stog, dakle samo +, .....
_________________ Sedam je prost broj
Bolonja je smeće i to pod hitno treba mijenjat
|
|
[Vrh] |
|
malena Forumaš(ica)
Pridružen/a: 27. 03. 2009. (16:43:42) Postovi: (62)16
Spol:
Lokacija: ...
|
|
[Vrh] |
|
Gino Forumaš(ica)
Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 23:10 čet, 12. 11. 2009 Naslov: |
|
|
[latex]\begin{array}{|l|l|}\hline
ispis & stog\\\hline
&(\\\hline
A & (\\\hline
A & (-\\\hline
AB & (-\\\hline
AB- & (+\\\hline
AB-C & (+\\\hline
AB-C+&\\\hline
AB-C+& /\\\hline
AB-C+A& /\\\hline
AB-C+A/& +\\\hline
AB-C+A/B& +\\\hline
AB-C+A/B+& -\\\hline
AB-C+A/B+& -(\\\hline
AB-C+A/B+C& -(\\\hline
AB-C+A/B+C& -(+\\\hline
AB-C+A/B+CA& -(+\\\hline
AB-C+A/B+CA+-& \\\hline
\end{array}[/latex]
[size=9][color=#999999]Added after 3 minutes:[/color][/size]
[quote="malena"]proslogodisnji kolokvij funkcija IZBACI one koji se javljaju manje od k puta[/quote]
[code:1]// 2008 str 6 (nigdje nisam koristio to da su charovi ??)
int IZBACI(QUEUE *Q, int k){
STACK S1,S2;
int koliko=0,i,vrati=0;
S_MAKE_NULL(&S1); S_MAKE_NULL(&S2);
while(!EMPTY(*Q)){
PUSH(FRONT(*Q),&S1);
DEQUEUE(Q);
while(!EMPTY(*Q)){
if(FRONT(*Q)==TOP(S1)){
PUSH(FRONT(*Q),&S1);
DEQUEUE(Q);
koliko+=1;
}
PUSH(FRONT(*Q),&S2);
DEQUEUE(Q)
}
if(koliko+1<k){
for(i=0;i<koliko+1;i++)
POP(&S1);
vrati+=1;
}
while(!S_EMPTY(S2)){
ENQUEUE(TOP(S2),Q);
POP(&S2);
}
koliko=0;
}
while(!S_EMPTY(S1)){
ENQUEUE(TOP(S1),Q);
POP(&S1);
}
return vrati;
}[/code:1]
Added after 3 minutes:
malena (napisa): | proslogodisnji kolokvij funkcija IZBACI one koji se javljaju manje od k puta |
Kod: | // 2008 str 6 (nigdje nisam koristio to da su charovi ??)
int IZBACI(QUEUE *Q, int k){
STACK S1,S2;
int koliko=0,i,vrati=0;
S_MAKE_NULL(&S1); S_MAKE_NULL(&S2);
while(!EMPTY(*Q)){
PUSH(FRONT(*Q),&S1);
DEQUEUE(Q);
while(!EMPTY(*Q)){
if(FRONT(*Q)==TOP(S1)){
PUSH(FRONT(*Q),&S1);
DEQUEUE(Q);
koliko+=1;
}
PUSH(FRONT(*Q),&S2);
DEQUEUE(Q)
}
if(koliko+1<k){
for(i=0;i<koliko+1;i++)
POP(&S1);
vrati+=1;
}
while(!S_EMPTY(S2)){
ENQUEUE(TOP(S2),Q);
POP(&S2);
}
koliko=0;
}
while(!S_EMPTY(S1)){
ENQUEUE(TOP(S1),Q);
POP(&S1);
}
return vrati;
} |
_________________ Mario Berljafa
|
|
[Vrh] |
|
|