Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Aiuto per funzione

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    5

    [C] Aiuto per funzione

    Ciao a tutti, ho bisogno una mano per scrivere una funzione in C che mi sta dando non pochi grattacapi.
    Io ho due tipi di dati cosģ definiti:
    codice:
    typedef struct nodo * punt;
    typedef struct nodo{
    	char carattere;
    	int array[N];
    	punt left;
    	punt right;
    }nodo;
    Ho bisogno di una funzione che riceve in ingresso un puntatore punt al primo nodo dell'albero e riempa gli array in questo modo:
    Consideriamo il nodo in testa. Questo nodo deve avere l'array vuoto. I puntatori left e right di questo nodo punteranno ad altri due nodi (o magari uno od entrambi i puntatori posso puntare a null, le caratteristiche dell'albero le descrivo alla fine di questo post).
    Nell'array del nodo puntato da right bisognerą inserire tutto il contenuto dell'array del nodo precedente (che essendo il primo era vuoto) e aggiungere nel primo spazio vuoto dell'array uno 0 mentre nell'array del nodo raggiunto da left bisognerą sempre copiare il contenuto dell'array del nodo precedente e poi inserie nel primo spazio vuoto di questo array un 1. Si supponga che la dimensione dell'array sia sufficiente a contenere tutti gli elementi necessari per arrivare ai nodi foglia. Infine la funzione, arrivata ai nodi foglia, deve stampare il carattere seguito da tutti gli elementi dell'array... Altra nota: l'albero non č nč simmetrico, nč binario, nč altro... non ha una struttura particolare, deve andare bene per qualsiasi tipo di albero. Ci sto impazzendo da un paio di giorni, riuscite a darmi una mano?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    E in questi giorni cosa hai scritto ... si deve pur partire da qualcosa ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    5
    codice:
    punt funzione(punt t){
    	int n,i;
    	for (n=0; array[n]!='\n'; n++){
    	};
    	if ((t->left->left==NULL)&&(t->left->right==NULL)){
    		for (i=0; i<n; i++){
    			t->left->array[i]=t->array[i];
    		}
                    i++;
                    t->left->array[i]=1;
    		printf("\n%c:      ", t->left->carattere);
    		for(n=0; n<=i; n++){
    			printf("%d", t->left->array[n]);
    		};
    		return t;
    	}
    	if((t->right->left==NULL)&&(t->right->right==NULL)){
    		printf("\n%c:      ", t->right->carattere);
    		for (i=0; i<n; i++){
    			t->right->array[i]=t->array[i];
    		}
                    i++;
                    t->right->array[i]=0;
    		for(n=0; n<=i; n++){
    			printf("%d", t->right->array[n]);
    		};
    		return t;
    	}
    	else{
    		t->left->array[i]=1;
    		t->right->array[i]=0;
    		t=funzione(t->left);
    		if (t->left->left==NULL)
    			return funzione(t->right);
    		else
    			return funzione(t->left);
    	}
    }
    Ma diciamo che č un obrobrio... il punto č che č proprio sbagliato il modo di affrontare il problema, non riesco a capire come percorrere tutto l'albero....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.