Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
angelika Forumaš(ica)
Pridružen/a: 08. 02. 2011. (17:26:51) Postovi: (5F)16
|
|
[Vrh] |
|
slonic~tonic Forumaš(ica)
Pridružen/a: 26. 10. 2011. (14:16:34) Postovi: (84)16
Spol:
|
|
[Vrh] |
|
angelika Forumaš(ica)
Pridružen/a: 08. 02. 2011. (17:26:51) Postovi: (5F)16
|
|
[Vrh] |
|
kiara Forumaš(ica)
Pridružen/a: 15. 11. 2011. (23:22:57) Postovi: (55)16
|
|
[Vrh] |
|
pedro Forumaš(ica)
Pridružen/a: 21. 10. 2010. (14:08:21) Postovi: (19B)16
|
Postano: 16:07 čet, 15. 11. 2012 Naslov: |
|
|
[quote="kiara"][quote="pedro"]http://web.math.pmf.unizg.hr/nastava/spa/kolokviji/2010/SPA%20-%202010%20-%20kolokvij1%20-%20zadaci.pdf
može 4 zadatak?
[/quote]
Ja isto nisam znala ovaj pod b). Kako doci do nekog cvora n u binarnom stablu? Nekim obilaskom stabla pretpostavljam, ali ne znam na koji nacin. Ako bi itko mogao pomoci, hvala unaprijed![/quote]
ej rješila sam
[code:1]void PREORDER (node n, BTREE B)
{
node i,j;
i = LEFT_CHILD(n,B);
j = RIGHT_CHILD(n,B);
if(i == LAMBDA && j==LAMBDA)
{
DELETE(n, &B);
}
while(i != LAMBDA && j!= LAMBDA)
{
PREORDER(i,B);
PREORDER(j,B);
}
}
void list(BTREE *B)
{
node n = ROOT(*B);
PREORDER(n, *B);
}[/code:1]
nadam se da je to točno :D
kiara (napisa): | pedro (napisa): | http://web.math.pmf.unizg.hr/nastava/spa/kolokviji/2010/SPA%20-%202010%20-%20kolokvij1%20-%20zadaci.pdf
može 4 zadatak?
|
Ja isto nisam znala ovaj pod b). Kako doci do nekog cvora n u binarnom stablu? Nekim obilaskom stabla pretpostavljam, ali ne znam na koji nacin. Ako bi itko mogao pomoci, hvala unaprijed! |
ej rješila sam
Kod: | void PREORDER (node n, BTREE B)
{
node i,j;
i = LEFT_CHILD(n,B);
j = RIGHT_CHILD(n,B);
if(i == LAMBDA && j==LAMBDA)
{
DELETE(n, &B);
}
while(i != LAMBDA && j!= LAMBDA)
{
PREORDER(i,B);
PREORDER(j,B);
}
}
void list(BTREE *B)
{
node n = ROOT(*B);
PREORDER(n, *B);
} |
nadam se da je to točno
|
|
[Vrh] |
|
kiara Forumaš(ica)
Pridružen/a: 15. 11. 2011. (23:22:57) Postovi: (55)16
|
|
[Vrh] |
|
pedro Forumaš(ica)
Pridružen/a: 21. 10. 2010. (14:08:21) Postovi: (19B)16
|
|
[Vrh] |
|
kiara Forumaš(ica)
Pridružen/a: 15. 11. 2011. (23:22:57) Postovi: (55)16
|
|
[Vrh] |
|
student_92 Forumaš(ica)
Pridružen/a: 17. 09. 2011. (16:31:46) Postovi: (B9)16
|
|
[Vrh] |
|
slonic~tonic Forumaš(ica)
Pridružen/a: 26. 10. 2011. (14:16:34) Postovi: (84)16
Spol:
|
Postano: 19:24 čet, 15. 11. 2012 Naslov: |
|
|
[quote="student_92"]Nije isključivo vezano uz kolokvij, ali evo ovdje. Može li netko zakodirati funkciju koja kreira binarno stablo, i to član po član, neovisno o implementaciji? Ili barem da mi da ideju kako to realizirati.[/quote]
[code:1]void kreiraj (char (*s)[20], BTREE *B, int n) {
BTREE TL, TR;
MAKE_NULL(&TL);
MAKE_NULL(&TR);
labeltype k;
if(j>=n) return;
strcpy (k, s[j]);
++j;
if((strcmp(k, "NULL"))==0) return;
kreiraj(s, &TL, n);
kreiraj(s, &TR, n);
CREATE(k, TL, TR, B);
}[/code:1]
[size=9][color=#999999]Added after 9 minutes:[/color][/size]
moze mi netko reci koji je zadnji zadatak napravljen na vjezbama? tj.da li se radio Huffmanog algoritam? :/ hvala unaprijed.. :)
student_92 (napisa): | Nije isključivo vezano uz kolokvij, ali evo ovdje. Može li netko zakodirati funkciju koja kreira binarno stablo, i to član po član, neovisno o implementaciji? Ili barem da mi da ideju kako to realizirati. |
Kod: | void kreiraj (char (*s)[20], BTREE *B, int n) {
BTREE TL, TR;
MAKE_NULL(&TL);
MAKE_NULL(&TR);
labeltype k;
if(j>=n) return;
strcpy (k, s[j]);
++j;
if((strcmp(k, "NULL"))==0) return;
kreiraj(s, &TL, n);
kreiraj(s, &TR, n);
CREATE(k, TL, TR, B);
} |
Added after 9 minutes:
moze mi netko reci koji je zadnji zadatak napravljen na vjezbama? tj.da li se radio Huffmanog algoritam? hvala unaprijed..
_________________ Lakše je naučiti matematiku nego raditi bez nje.
|
|
[Vrh] |
|
student_92 Forumaš(ica)
Pridružen/a: 17. 09. 2011. (16:31:46) Postovi: (B9)16
|
Postano: 19:31 čet, 15. 11. 2012 Naslov: |
|
|
[quote="slonic~tonic"]
[code:1]void kreiraj (char (*s)[20], BTREE *B, int n) {
BTREE TL, TR;
MAKE_NULL(&TL);
MAKE_NULL(&TR);
labeltype k;
if(j>=n) return;
strcpy (k, s[j]);
++j;
if((strcmp(k, "NULL"))==0) return;
kreiraj(s, &TL, n);
kreiraj(s, &TR, n);
CREATE(k, TL, TR, B);
}[/code:1][/quote]
Hvala, ali što tu predstavlja j? Ne vidim ga inicijaliziranog.
slonic~tonic (napisa): |
Kod: | void kreiraj (char (*s)[20], BTREE *B, int n) {
BTREE TL, TR;
MAKE_NULL(&TL);
MAKE_NULL(&TR);
labeltype k;
if(j>=n) return;
strcpy (k, s[j]);
++j;
if((strcmp(k, "NULL"))==0) return;
kreiraj(s, &TL, n);
kreiraj(s, &TR, n);
CREATE(k, TL, TR, B);
} |
|
Hvala, ali što tu predstavlja j? Ne vidim ga inicijaliziranog.
|
|
[Vrh] |
|
slonic~tonic Forumaš(ica)
Pridružen/a: 26. 10. 2011. (14:16:34) Postovi: (84)16
Spol:
|
Postano: 19:33 čet, 15. 11. 2012 Naslov: |
|
|
[quote="student_92"][quote="slonic~tonic"]
[code:1]void kreiraj (char (*s)[20], BTREE *B, int n) {
BTREE TL, TR;
MAKE_NULL(&TL);
MAKE_NULL(&TR);
labeltype k;
if(j>=n) return;
strcpy (k, s[j]);
++j;
if((strcmp(k, "NULL"))==0) return;
kreiraj(s, &TL, n);
kreiraj(s, &TR, n);
CREATE(k, TL, TR, B);
}[/code:1][/quote]
Hvala, ali što tu predstavlja j? Ne vidim ga inicijaliziranog.[/quote]
j je globalna varijabla
student_92 (napisa): | slonic~tonic (napisa): |
Kod: | void kreiraj (char (*s)[20], BTREE *B, int n) {
BTREE TL, TR;
MAKE_NULL(&TL);
MAKE_NULL(&TR);
labeltype k;
if(j>=n) return;
strcpy (k, s[j]);
++j;
if((strcmp(k, "NULL"))==0) return;
kreiraj(s, &TL, n);
kreiraj(s, &TR, n);
CREATE(k, TL, TR, B);
} |
|
Hvala, ali što tu predstavlja j? Ne vidim ga inicijaliziranog. |
j je globalna varijabla
_________________ Lakše je naučiti matematiku nego raditi bez nje.
|
|
[Vrh] |
|
student_92 Forumaš(ica)
Pridružen/a: 17. 09. 2011. (16:31:46) Postovi: (B9)16
|
|
[Vrh] |
|
nuclear Forumaš(ica)
Pridružen/a: 13. 11. 2011. (17:40:12) Postovi: (74)16
Spol:
|
Postano: 21:09 pon, 11. 11. 2013 Naslov: |
|
|
Ako itko ima volje da mi pokaže gdje griješim! Riječ je o programu SInsert, gdje se u već sortiranu listu ubacuje element tako da lista opet bude sortirana. Ne znam gdje, kad je riječ o pointerima, griješim.
[code:1]
#include<stdio.h>
#include<stdlib.h>
typedef double elementtype;
typedef struct celltag{
elementtype element;
struct celltag *next;
}celltype;
typedef celltype *List, *position;
position LiEnd(List L){
position q;
q=L;
while(q->next != NULL)
q=q->next;
return q;}
position LiFirst(List L){
return L;
}
position LiNext(position p, List L){
return p->next;
}
position LiPrevious(position p, List L){
position q;
for(q=L; q->next!=p; q=q->next)
return q;
}
position LiMakeNull(List *L){
*L=(celltype*)malloc(sizeof(celltype));
(*L)->next=NULL;
return (*L);}
void LiInsert(elementtype x, position p){
position temp;
temp=p->next;
p->next=(celltype*)malloc(sizeof(celltype));
p->next->element=x;
p->next->next=temp;}
void LiDelete(position p){
position temp;
temp=p->next;
p->next=p->next->next;
free(temp);}
elementtype LiRetrieve(position p, List L){
return p->next->element; }
void SInsert(elementtype x, List *L){
position p;
int found=0;
p=LiFirst(*L);
while(p!=LiEnd(*L) && !found){
if(x<=LiRetrieve(p,*L)) found=1;
else p=LiNext(p, *L);
}
LiInsert(x,p);
}
int main(){
List L;
position q, p;
elementtype x, y;
char zn;
LiMakeNull(&L); LiMakeNull(&p);
L=p;
do{
printf("Upisi clan:\n");
scanf("%lf", &y);
LiInsert(y,p);
printf("Zelis dalje? d:n\n");
p=p->next;
scanf(" %c", &zn);
}while(zn=='d');
printf("Koji zelis ubaciti?\n");
scanf("%lf", &x);
SInsert(x,&L);
printf("\nPOSLIJE\n");
for(q=LiFirst(L); q!=LiEnd(L); q=LiNext(q,L))
printf("\nel: %lf\n", q->element);
return 0;}
[/code:1]
...otkrila sam da sam zaboravila na zaglavlje....da treba biti q->next->element ..... obožavam takve sitnice koje mi oduzmu cijeli dan ^^
Ako itko ima volje da mi pokaže gdje griješim! Riječ je o programu SInsert, gdje se u već sortiranu listu ubacuje element tako da lista opet bude sortirana. Ne znam gdje, kad je riječ o pointerima, griješim.
Kod: |
#include<stdio.h>
#include<stdlib.h>
typedef double elementtype;
typedef struct celltag{
elementtype element;
struct celltag *next;
}celltype;
typedef celltype *List, *position;
position LiEnd(List L){
position q;
q=L;
while(q->next != NULL)
q=q->next;
return q;}
position LiFirst(List L){
return L;
}
position LiNext(position p, List L){
return p->next;
}
position LiPrevious(position p, List L){
position q;
for(q=L; q->next!=p; q=q->next)
return q;
}
position LiMakeNull(List *L){
*L=(celltype*)malloc(sizeof(celltype));
(*L)->next=NULL;
return (*L);}
void LiInsert(elementtype x, position p){
position temp;
temp=p->next;
p->next=(celltype*)malloc(sizeof(celltype));
p->next->element=x;
p->next->next=temp;}
void LiDelete(position p){
position temp;
temp=p->next;
p->next=p->next->next;
free(temp);}
elementtype LiRetrieve(position p, List L){
return p->next->element; }
void SInsert(elementtype x, List *L){
position p;
int found=0;
p=LiFirst(*L);
while(p!=LiEnd(*L) && !found){
if(x<=LiRetrieve(p,*L)) found=1;
else p=LiNext(p, *L);
}
LiInsert(x,p);
}
int main(){
List L;
position q, p;
elementtype x, y;
char zn;
LiMakeNull(&L); LiMakeNull(&p);
L=p;
do{
printf("Upisi clan:\n");
scanf("%lf", &y);
LiInsert(y,p);
printf("Zelis dalje? d:n\n");
p=p->next;
scanf(" %c", &zn);
}while(zn=='d');
printf("Koji zelis ubaciti?\n");
scanf("%lf", &x);
SInsert(x,&L);
printf("\nPOSLIJE\n");
for(q=LiFirst(L); q!=LiEnd(L); q=LiNext(q,L))
printf("\nel: %lf\n", q->element);
return 0;}
|
...otkrila sam da sam zaboravila na zaglavlje....da treba biti q→next→element ..... obožavam takve sitnice koje mi oduzmu cijeli dan ^^
|
|
[Vrh] |
|
aangelinaaa Forumaš(ica)
Pridružen/a: 09. 09. 2011. (16:39:32) Postovi: (9)16
Spol:
|
|
[Vrh] |
|
Shirohige Forumaš(ica)
Pridružen/a: 16. 11. 2012. (20:19:56) Postovi: (ED)16
Spol:
|
|
[Vrh] |
|
Shirohige Forumaš(ica)
Pridružen/a: 16. 11. 2012. (20:19:56) Postovi: (ED)16
Spol:
|
|
[Vrh] |
|
aangelinaaa Forumaš(ica)
Pridružen/a: 09. 09. 2011. (16:39:32) Postovi: (9)16
Spol:
|
|
[Vrh] |
|
anamarie Forumaš(ica)
Pridružen/a: 07. 09. 2011. (10:59:19) Postovi: (87)16
Spol:
|
|
[Vrh] |
|
hipernova Forumaš(ica)
Pridružen/a: 25. 09. 2011. (20:15:21) Postovi: (C)16
Lokacija: Zagreb
|
Postano: 13:59 čet, 21. 11. 2013 Naslov: |
|
|
[code:1]void kreiraj (char (*s)[20], BTREE *B, int n) {
BTREE TL, TR;
MAKE_NULL(&TL);
MAKE_NULL(&TR);
labeltype k;
if(j>=n) return;
strcpy (k, s[j]);
++j;
if((strcmp(k, "NULL"))==0) return;
kreiraj(s, &TL, n);
kreiraj(s, &TR, n);
CREATE(k, TL, TR, B);
}[/code:1]
jel to onaj kod da konstruiras drvo iz preordera ako imas zadane prazne cvorove?
radio se hoffman na zadnjim vjezbama zadnji sat ( kod assistentice stojic)
Kod: | void kreiraj (char (*s)[20], BTREE *B, int n) {
BTREE TL, TR;
MAKE_NULL(&TL);
MAKE_NULL(&TR);
labeltype k;
if(j>=n) return;
strcpy (k, s[j]);
++j;
if((strcmp(k, "NULL"))==0) return;
kreiraj(s, &TL, n);
kreiraj(s, &TR, n);
CREATE(k, TL, TR, B);
} |
jel to onaj kod da konstruiras drvo iz preordera ako imas zadane prazne cvorove?
radio se hoffman na zadnjim vjezbama zadnji sat ( kod assistentice stojic)
|
|
[Vrh] |
|
|