Kod: |
#define N 1000
typedef char elementtype; typedef struct { elementtype element; int koliko; int next; }MULTISET; void BubbleSort(char c[]){ int i,j; int n=strlen(c); for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if((strcmp(c[j+1],c[j])<0) swap(&c[j],&c[j+1]); } void swap(char *x, char *y){ char tmp; tmp=*x; *x=*y; *y=tmp; } ... BubbleSort(a); ... |
Kod: |
for (pom = f i r s t ; pom; pom = pom−>next ) |
Kod: |
struct celltype{
elementtype element; int koliko; int next; } MULTISET[N]; |
.anchy. (napisa): |
javlja mi " invalid conversion from `char' to `const char*' " u strcmp, i tako nešto slično kod poziva swapa. |
Kod: |
typedef struct {
elementtype element; int koliko; int next; }MULTISET[N]; |
Kod: |
MULTISET avail, A, B; |
Kod: |
for(i=0;i<N;i++) avail.next=i+1; |
.anchy. (napisa): | ||
i tada deklarirala liste kao:
je li to dobro? |
.anchy. (napisa): | ||
sada mi je sve avail,pa sam napravila for petlju:
ali mi javlja grešku za to.. |
Kod: |
for(i=0;i<N-1;i++)
SPACE[i]->next=i+1; avail=SPACE[0].next; SPACE[N-1]=-1; |
.anchy. (napisa): | ||
|
.anchy. (napisa): | ||
|
Kod: |
void MAKE_NULL(MAPPING *M){
int i; for(i=0;i<B;i++) (*M)[i]= NULL; } |
Kod: |
#include <stdio.h> #include <stdlib.h> #define MAXN 1000 #define LAMBDA -1 #define PRAZNO '-' typedef char labeltype typedef int node; typedef node TREE; typedef struct { labeltype label; node parent, first_child, next_sibling; }SPACE [MAXN] void MAKE_NULL(int n) { node avail; for (i=n, i<MAXN, i++) { SPACE[I].label=PRAZNO; SPACE[i].next_sibling=i+1; SPACE[MAXN].next_sibling=LAMBDA; avail=n; } node MAKE_ROOT(labeltype l, TREE *T) { if (avail==LAMBDA){ printf("Polje SPACE je puno!"); system("pause"); exit(1); } T=avail avail=SPACE[avail].next_sibling; SPACE[T].label=l; SPACE[T].parent=LAMBDA; SPACE[T].first_child=LAMBDA SPACE[T].next_sibling=LAMBDA return T; } node INSERT_CHILD(labeltype l, node i, TREE *T) { node j; if (SPACE[i].label==PRAZNO) { /* ? */ printf("Taj cvor nije u stablu!"); system("pause"); exit(1); } if (avail==LAMBDA){ printf("Polje SPACE je puno!"); system("pause"); exit(1); } j=avail; avail=SPACE[avail].next_sibling; SPACE[j].parent=i; SPACE[j].first_child=LAMBDA; SPACE[j].next_sibling=SPACE[i].first_child; SPACE[i].first_child=j; return j; } node INSERT_SIBLING(labeltype l, node i, TREE *T) { node j,t; if (SPACE[i].label==PRAZNO) { /* ? */ printf("Taj cvor nije u stablu!"); system("pause"); exit(1); } if (avail==LAMBDA){ printf("Polje SPACE je puno!"); system("pause"); exit(1); } j=avail; avail=SPACE[avail].next_sibling; SPACE[j].next_sibling=SPACE[i].next_sibling; SPACE[j].parent=SPACE[i].parent; SPACE[j].first_child=LAMBDA; SPACE[i].next_sibling=j; return j; } void DELETE(node i, TREE *T) { node j,k,g; if (SPACE[i].label==PRAZNO) { /* ? */ printf("Taj cvor nije u stablu!"); system("pause"); exit(1); } if (SPACE[i].parent==LAMBDA) { printf("Taj cvor je korijen!"); system("pause"); exit(1); } if (SPACE[i].first_child!=LAMBDA) { printf("Taj cvor ima djece!"); system("pause"); exit(1); } j=SPACE[i].parent; k=SPACE[i].next_sibling; g=SPACE[j].first_child; if (g!=i) { while (SPACE[g].next_sibling!=i) g=SPACE[g].next_sibling; } if (i==SPACE[j].first_child) SPACE[j].first_child=k; else SPACE[g].next_sibling=k; SPACE[i].label=PRAZNO; SPACE[i].next_sibling=avail; avail=i; } node ROOT(TREE T) { return T; } node FIRST_CHILD(node i; TREE T) { if (SPACE[i].label==PRAZNO) { /* ? */ printf("Taj cvor nije u stablu!"); system("pause"); exit(1); } return SPACE[i].first_child; } node NEXT_SIBLING(node i; TREE T) { if (SPACE[i].label==PRAZNO) { /* ? */ printf("Taj cvor nije u stablu!"); system("pause"); exit(1); } return SPACE[i].next_sibling; } node PARENT(node i; TREE T) { if (SPACE[i].label==PRAZNO) { /* ? */ printf("Taj cvor nije u stablu!"); system("pause"); exit(1); } return SPACE[i].parent; } labeltype LABEL(node i; TREE T) { if (SPACE[i].label==PRAZNO) { /* ? */ printf("Taj cvor nije u stablu!"); system("pause"); exit(1); } return SPACE[i].label; } void CHANGE_LABEL(labeltype l, node i; TREE *T) { if (SPACE[i].label==PRAZNO) { /* ? */ printf("Taj cvor nije u stablu!"); system("pause"); exit(1); } SPACE[i].label=l; } int main (void) { TREE T; MAKE_NULL(0); system("pause"); return 0; } |
homesweethome (napisa): |
Treba mi program za ispis INORDER obilaska binarnog stabla, implementiranog pomocu pointera? ne treba biti neovisan o implementaciji.. |
Kod: |
inorder(LEFT_CHILD(..),...);
printf("..",korijen); inorder(RIGHT_CHILD(..),...); |
c.p.-23 (napisa): |
ima li itko živ implementaciju:
a.t.p. SET pomoću nesortirane vezane liste (veze u listi su uspostavljene pomoću kursora) i pretpostavku da skupovi sadrže podatke tipa char? |
eve (napisa): |
jel ima netko implementaciju rječnika (sadrži podatke tima char) pomoću otvorene hash tablice? muci me kakvu funkciju uzet.. i probala sam sa implementacijom koja je u skripti ali izbacuje hrpu grešaka... plizz help ak neko to ima... |
Kod: |
#define B 20 |
Tomy007 (napisa): | ||
|
Kod: |
SPACE[MAXN] |
Kod: |
node avail |
Kod: |
typedef node TREE; |
Kod: |
typedef node* TREE; |
Kod: |
int main(){
TREE stablo; MAKE_NULL( &stablo ); // SPACE[0] je korijen ovog jedinog stabla // ovak bi ga mogo koristit stablo.first_child.next_sibiling.label; .... } |
Kod: |
int main(){
TREE stablo1; TREE stablo2; MAKE_NULL( &stablo1 ); MAKE_NULL( &stablo2 ); // sada funkcija MAKE_NULL ne stavlja // da je korijen na SPACE[0] neg kak je ti namjestis .... // ovak bi ih mogo koristit stablo1-> first_child.next_sibiling.label; stablo2->first_child.first_child.next_sibiling.label; ... } |
Kod: |
void unesi_cvorove( TREE *T ){ upisi broj djece za cvor *T; while( broj_djece > 0 ){ unesi dijete za cvor *T; broj_djece--; } // sada su unesena sva djeca od cvora *T sada pomocnim pointerom odi po svoj djeci od *T i unosi djecu za njih // pozovi funkciju unesi_cvorove( ... ) na pomocnom pointeru } |
Cobs (napisa): | ||
najpojednostavljeniji oblik rekurzivne funkcije:
kako unositi djecu, ovisi o načinu implementacije, kao i "hodanje" po djeci nekog čvora. Naravno ja sam pretpostavio da je početni čvor ( KORIJEN ) već alociran i ima neku oznaku, te da u main funkciji samo pozoveš tu funkciju na njemu. |
Kod: |
int main() { node n; labeltype l; int d,b; scanf("%c",&l); TREE T; n=MAKE_ROOT(l,&T); while(1) { scanf("%d", &d); scanf("%d", &b); //tu unosim 0 ili 1 jer svaki put ispitujem ima li cvor dijete i prvog brata if(d==1) { scanf("%c",&l);printf("\n%c\n",l); n=INSERT_CHILD(l,n,&T); n=PARENT(n,T); } if(b==1) { scanf("%c",&l); n=INSERT_SIBLING(l,n,&T); n=FIRST_CHILD(PARENT(n,T),T); } if(FIRST_CHILD(n,T)!=LAMBDA) { n=FIRST_CHILD(n,T); continue; } if(NEXT_SIBLING(n,T)!=LAMBDA) { n=NEXT_SIBLING(n,T); continue; } while((NEXT_SIBLING(n,T)==LAMBDA)&&(PARENT(n,T)!=LAMBDA)) { n=PARENT(n,T); } if(PARENT(n,T)==LAMBDA) break; else { n=NEXT_SIBLING(n,T); } } return 0; } |
output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.