Code:
void brPov(Pcvor glava) {
enum {NEMA, IMA};
Pcvor tek, pret;
Pcvor novaG, noviTek, noviPret, novi;
short k;
/*inicijalizacija nove liste*/
ini (&novaG);
printf("\n\tTablearni prikaz broja pojavljivanja elemenata u listi!\n\n");
if (glava==NULL) {
printf("\n\t\tLista je prazna. Ne moze da se ispise tabelarni prikaz!\n");
}
else {
tek = glava;
while (tek!=NULL) {
pret = tek;
k = NEMA;
noviTek = novaG;
while (noviTek!=NULL) {
noviPret = noviTek;
if (noviPret->broj == pret->broj) k = IMA;
noviTek = noviTek->sledeci;
}
if (k==NEMA) {
if (novaG==NULL) {
novaG = (Tcvor *)malloc(sizeof(Tcvor));
novaG->broj = pret->broj;
novaG->sledeci = NULL;
}
else {
novi = (Tcvor *)malloc(sizeof(Tcvor));
novi->broj = pret->broj;
novi->sledeci = novaG;
novaG = novi;
}
printf("%d se pojavljivao %d puta!\n", pret->broj, prebroj(glava, pret->broj));
}
tek = tek->sledeci;
}
}
osobodiMem(&novaG);
}
void brPov(Pcvor glava) {
enum {NEMA, IMA};
Pcvor tek, pret;
Pcvor novaG, noviTek, noviPret, novi;
short k;
/*inicijalizacija nove liste*/
ini (&novaG);
printf("\n\tTablearni prikaz broja pojavljivanja elemenata u listi!\n\n");
if (glava==NULL) {
printf("\n\t\tLista je prazna. Ne moze da se ispise tabelarni prikaz!\n");
}
else {
tek = glava;
while (tek!=NULL) {
pret = tek;
k = NEMA;
noviTek = novaG;
while (noviTek!=NULL) {
noviPret = noviTek;
if (noviPret->broj == pret->broj) k = IMA;
noviTek = noviTek->sledeci;
}
if (k==NEMA) {
if (novaG==NULL) {
novaG = (Tcvor *)malloc(sizeof(Tcvor));
novaG->broj = pret->broj;
novaG->sledeci = NULL;
}
else {
novi = (Tcvor *)malloc(sizeof(Tcvor));
novi->broj = pret->broj;
novi->sledeci = novaG;
novaG = novi;
}
printf("%d se pojavljivao %d puta!\n", pret->broj, prebroj(glava, pret->broj));
}
tek = tek->sledeci;
}
}
osobodiMem(&novaG);
}
Ova funkcija treba da ispise koliko puta se koji broj pojavljivao u dinamickoj listi. Ja sam je pisao, ali nekad radi kako treba, nekad prekine ceo program, a nekad izmeni vrednosti u glavnoj listi!
osobodiMem i prebroj su moje funkcije i rade kako treba.
U stvari uploadovaću ceo program ako može da pomogle, ali sve ostalo radi OK, čini mi se.
Problem se pojavio kada sam počeo da radim sa lokalnom listom u kojoj pamtim za koje brojeve sam već štampao podatke (da se ne ponavlja). Dok je štampao za sve brojeve iz liste (za one koje se ponavljaju i više puta) sve je radilo kako treba. Znači, ovaj kod radi kako treba:
Code:
void brPov(Pcvor glava) {
Pcvor tek, pret;
printf("\n\tTablearni prikaz broja pojavljivanja elemenata u listi!\n\n");
if (glava==NULL) {
printf("\n\t\tLista je prazna. Ne moze da se ispise tabelarni prikaz!\n");
}
else {
tek = glava;
while (tek!=NULL) {
pret = tek;
printf("%d se pojavljivao %d puta!\n", pret->broj, prebroj(glava, pret->broj));
tek = tek->sledeci;
}
}
}
void brPov(Pcvor glava) {
Pcvor tek, pret;
printf("\n\tTablearni prikaz broja pojavljivanja elemenata u listi!\n\n");
if (glava==NULL) {
printf("\n\t\tLista je prazna. Ne moze da se ispise tabelarni prikaz!\n");
}
else {
tek = glava;
while (tek!=NULL) {
pret = tek;
printf("%d se pojavljivao %d puta!\n", pret->broj, prebroj(glava, pret->broj));
tek = tek->sledeci;
}
}
}
ali i sami vidite u čemu je problem. Ako neki ima bolju ideju kako da rešim ovo, umesto da gleda moj kod i to je dobrodošlo pošto je ovo najnormalnija ideja koja je mani pala na pamet!
Ako može neko da pomogne...
Hvala unapred!
[Ovu poruku je menjao del-boy dana 06.01.2006. u 23:05 GMT+1]