Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4

    [C] Dichiarazione strutture

    Salve, devo risolvere il seguente problema:
    Scrivere urra funzione che, data una foresta di alberi binari di interi rappresentata come una lista di puntatori al nodo radice di ciascun albero, verifichi se tutti gli alberi sono heap-ordinati (la chiave di ogni nodo è maggiore o uguale delle chiavi dei nodi figli, se esistono).

    Ho provato a risolvere così:

    typedef struct nodo *ptree; \\albero
    typedef struct nodo{
    itemHtype item;
    ptree left, right;
    }nodeDescriptor;

    typedef struct foresta{ \\lista di puntatori alla radice
    ptree *root;
    struct foresta *next;
    }foresta

    typedef foresta *list_ptrforesta

    Se le strutture sono corrette come posso scrivere la funzione di controllo sugli alberi??
    Grazie

  2. #2
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    prima di ogni cosa...dovresti leggere il regolamento e postare il codice con gli appositi tag code /code!
    codice:
    typedef struct foresta{ \\lista di puntatori alla radice
    ptree *root;
    struct foresta *next;
    }foresta;
    
    typedef foresta *list_ptrforesta;
    apparte quei due punti e virgola la struttura è sintatticamente corretta.

    Per il resto, per verificare se è soddisfatta la condizione di heap, basta verificare come hai detto tu, che la chiave di ogni nodo è maggiore o uguale delle chiavi dei nodi figli, se esistono, quindi scorri la lista dei puntatori ai vari nodi radice e per ogni albero testi che questa condizione sia soddisfatta!
    se hai bisogno di altri chiarimenti chiedi!
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    Questo è il codice della fuzione di verifica sugli alberi

    codice:
    unsigned isHeap(ptree t){
    unsigned isLeftHeap, isRightHeap;
    if (t==NULL) return 1;
    if (t->left!=NULL) isLeftHeap=(t->item >= t->left->item && isHeap(t->left)) else isLeftHeap=1;
    if (t->right!=NULL) isRightHeap=(t->item >= t->right->item &&  isHeap(t->right); else isRightHeap=1;
    return isLeftHeap && isRightHeap;
    }
    puoi aiutarmi a scrivere la funzione relativa alla verifica che richiama isHeap.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.