Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Alberi binari con PHP

  1. #1
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940

    Alberi binari con PHP

    Buongiorno.

    Mi chiedevo: è possibile creare alberi binari ed - in generale - strutture di dati dinamiche con PHP?

    Grazie sin d'ora.

    [.:: JaguarXF ::.]
    __________________

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    appo

    [.:: JaguarXF ::.]
    __________________

  3. #3
    ma tu intendi coi puntatori? non so se ci sono ...

    Per fare un albero binario potresti fare così: lo salvi in un array. Se hai un libro di algoritmi e strutture dati puoi andare a vedere come si fa leggendo il capitolo dell'heap sort... oppure cerchi nel web.

    Per altre soluzioni ci dovrei pensare con calma.

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Sì, in sostanza volevo sapere se è possibile "simulare" le strutture a puntatori col PHP...

    [.:: JaguarXF ::.]
    __________________

  5. #5
    AZZ!
    http://www.phpday.it/talks/talk_base_04.php

    Guarda di cosa si occupa questo certo "Giuseppe"...

    Mi sa che dobbiamo arrangiarci con gli oggetti e gli array associativi


  6. #6
    beh ... in realtà si possono utilizzare i riferimenti

    dovrebbe essere fattibile +/-
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Forse dico una grossa cretinaggine, ma si potrebbe fare con gli oggetti?

    Proviamoci un po':

    codice:
    <?
    
    //classe dei nodi dell'albero:
    class nodo
    {
      var $figlio_sx;
      var $figlio_dx;
      var $chiave;
      
      function nodo($chiave)
      {
        $this->figlio_sx = NULL;
        $this->figlio_dx = NULL;
        $this->chiave = $chiave;
      }
    }
    
    //proviamo a costruire un albero di esempio:
    $radice = new nodo(35);
    $radice->figlio_sx = new nodo(20);
    $radice->figlio_dx = new nodo(51);
    $radice->figlio_dx->figlio_dx = new nodo(68);
    
    
    /* dovrebbe essere così:
                    35
                  /    \
                 20    51
                /  \  /  \
                         68
                        /  \
    */
    
    ?>
    Non l'ho provata quindi non so se va oppure no

  8. #8
    mi sa che il problema principale sarà quello di percorrere l'albero... chissà, forse una bella funzione ricorsiva risolve il problema!

  9. #9
    te lo sconsiglio grandemente

    uccideresti tutto

    ti conviene fare una cosa del tipo

    codice:
    $elenco_nodi = array(array($parent_primo_nodo, $primo_nodo));
    while(list(, $nodo_corrente) = each($elenco_nodi))
    {
      // fai quello che devi fare col nodo corrente
      // e se devi percorrere altri nodi li inserisci
      // nella lista
      //
      // Per acquisire il nodo vero e proprio fai 
      // $nodo_corrente[1] per leggere il parent $nodo_corrente[0]
    }
    se ti serve aggiungere altre informazioni le aggiungi a quest'elenco
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  10. #10
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    ALCUNE NOTE

    1. Sui riferimenti, da PHP.net:

    "I riferimenti in PHP sono il mezzo per accedere ad uno stesso contenuto di variabile utilizzando diversi nomi. Non si sta parlando di puntatori come in C, ma di alias nella tabella dei simboli."

    2. E' ardita l'idea di Insaponata, ma credo che il PHP non lo sopporterebbe.

    3. Non so, cercavo qualcosa di più simile ai puntatori di quanto esposto. Chiaro, vi ringrazio molto, è cmq solo un'idea la mia, così da poter realizzare strutture dati più veloci (a volte servono) di quelle "php-izzate" nel futuro.



    Altri contributi?

    [.:: JaguarXF ::.]
    __________________

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.