Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
.anchy. Forumaš(ica)
Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
Postano: 17:09 pet, 7. 5. 2010 Naslov: vezane liste |
|
|
7.3. Napisite funkciju delete() koja kao argumente uzima pointer na pocetak liste razlomaka,te brojnik i nazivnik razlomka. Funkcija treba iz liste obrisati prvi razlomak koji ima jednaku vrijednost kao razlomak definiran brojnikom i nazivnikom (argumenti funkcije).
Program ne radi ako treba obrisati prvi razlomak,pa ako mi netko može objasniti zašto:
[code:1]#include <stdio.h>
#include <stdlib.h>
typedef struct _razlomak{
int br,naz;
struct _razlomak *next;
}razlomak;
void deleten(razlomak **first, int x, int y){
razlomak *pom2;
pom2=(razlomak*)malloc(sizeof(razlomak));
for(pom2=*first;pom2;pom2=pom2->next)
if(pom2->next->br * y == pom2->next->naz * x && pom2->next){
razlomak *pomoc=pom2->next;
pom2->next=pom2->next->next;
free(pomoc);
break;
}
if((*first)->br * y == (*first)->naz * x){
razlomak *pomoc2=*first;
*first=pomoc2->next;
free(pomoc2);
}
}
int main(){
razlomak *first=NULL, *pom, *zadnji;
int n,i;
scanf("%d", &n);
for(i=0;i<n;i++){
razlomak *novi;
novi=(razlomak*)malloc(sizeof(razlomak));
scanf("%d %d", &novi->br, &novi->naz);
if(!first) zadnji=first=novi;
else {
zadnji->next=novi;
zadnji=novi;
}
}
zadnji->next=NULL;
deleten(&first, 2,3);
for(zadnji=first;zadnji;zadnji=zadnji->next)
printf("%d / %d\n", zadnji->br, zadnji->naz);
for(zadnji=first;zadnji;zadnji=pom){
pom=zadnji->next;
free(zadnji);
}
system("pause");
return 0;
}
[/code:1]
i još mi nešto nije jasno: koja je razlika između
[code:1]pom2->next=pom2->next->next;[/code:1] i [code:1]pom2=pom2->next->next;[/code:1] ?
7.3. Napisite funkciju delete() koja kao argumente uzima pointer na pocetak liste razlomaka,te brojnik i nazivnik razlomka. Funkcija treba iz liste obrisati prvi razlomak koji ima jednaku vrijednost kao razlomak definiran brojnikom i nazivnikom (argumenti funkcije).
Program ne radi ako treba obrisati prvi razlomak,pa ako mi netko može objasniti zašto:
Kod: | #include <stdio.h>
#include <stdlib.h>
typedef struct _razlomak{
int br,naz;
struct _razlomak *next;
}razlomak;
void deleten(razlomak **first, int x, int y){
razlomak *pom2;
pom2=(razlomak*)malloc(sizeof(razlomak));
for(pom2=*first;pom2;pom2=pom2->next)
if(pom2->next->br * y == pom2->next->naz * x && pom2->next){
razlomak *pomoc=pom2->next;
pom2->next=pom2->next->next;
free(pomoc);
break;
}
if((*first)->br * y == (*first)->naz * x){
razlomak *pomoc2=*first;
*first=pomoc2->next;
free(pomoc2);
}
}
int main(){
razlomak *first=NULL, *pom, *zadnji;
int n,i;
scanf("%d", &n);
for(i=0;i<n;i++){
razlomak *novi;
novi=(razlomak*)malloc(sizeof(razlomak));
scanf("%d %d", &novi->br, &novi->naz);
if(!first) zadnji=first=novi;
else {
zadnji->next=novi;
zadnji=novi;
}
}
zadnji->next=NULL;
deleten(&first, 2,3);
for(zadnji=first;zadnji;zadnji=zadnji->next)
printf("%d / %d\n", zadnji->br, zadnji->naz);
for(zadnji=first;zadnji;zadnji=pom){
pom=zadnji->next;
free(zadnji);
}
system("pause");
return 0;
}
|
i još mi nešto nije jasno: koja je razlika između
Kod: | pom2->next=pom2->next->next; | i Kod: | pom2=pom2->next->next; | ?
|
|
[Vrh] |
|
pbakic Forumaš(ica)
Pridružen/a: 05. 10. 2009. (17:48:30) Postovi: (143)16
Spol:
|
|
[Vrh] |
|
.anchy. Forumaš(ica)
Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
|
[Vrh] |
|
pbakic Forumaš(ica)
Pridružen/a: 05. 10. 2009. (17:48:30) Postovi: (143)16
Spol:
|
|
[Vrh] |
|
.anchy. Forumaš(ica)
Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
|
[Vrh] |
|
pajopatak Forumaš(ica)
Pridružen/a: 25. 10. 2009. (22:20:04) Postovi: (BE)16
|
|
[Vrh] |
|
|