Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di buji
    Registrato dal
    Nov 2002
    Messaggi
    178

    [C] Popolamento lista tramite visita in-order di un albero

    Buongiorno a tutti,
    sto creando una lista tramite la visita inorder di un albero,
    la visita percorre tutti i nodi correttamente ma popola la lista in modo anomalo.

    codice:
    lista *appendilista(nodo *pnodo, char direzione) {
          lista *plista;
          if (pnodo != NULL) {
                plista = (lista *)malloc(sizeof(struct tlista));
                if (plista != NULL) {
                   plista->pnext = appendilista(pnodo->pleft,direzione);
                   printf("Cod. = %d - Part. = %d\n",pnodo->pvolo->codice,pnodo->pvolo->ora_p);
                   plista->pnodo = pnodo;
                   plista->pnext = appendilista(pnodo->pright,direzione);
                return plista;
                }
          } else {
                return NULL;
          }
    }
    Buji

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi SEMPRE proporre il main che chiama la funzione, perche' il problema potrebbe essere lì ... e mi pare che tu lo sappia ...

    (e dato che avrai cambiato nomi a strutture e tipi, riproponili ...)

  3. #3
    Utente di HTML.it L'avatar di buji
    Registrato dal
    Nov 2002
    Messaggi
    178
    codice:
    lista  *mialista;
    mialista = crea_lista(*radice, 'd');
    La chiamata è fatta tramite questa istruzione.
    Fin lì il programma fa tutto corrttamente e la lista che ne risulta salta alcuni nodi dell'albero correttamente presenti. In particolare salta i nodi sx tranne il primo che incontra nell'albero.
    Buji

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da buji
    codice:
    lista  *mialista;
    mialista = crea_lista(*radice, 'd');
    La chiamata è fatta tramite questa istruzione.
    Fin lì il programma fa tutto corrttamente e la lista che ne risulta salta alcuni nodi dell'albero correttamente presenti. In particolare salta i nodi sx tranne il primo che incontra nell'albero.
    Ma quando chiami appendilista nel main?

  5. #5
    Utente di HTML.it L'avatar di buji
    Registrato dal
    Nov 2002
    Messaggi
    178
    Ooops...
    la chiamo da un'altra funzione.
    codice:
    lista *crea_lista(nodo pnodo, char direzione) {
          lista *appendilista(nodo * pnodo, char direzione);
          nodo * p = &pnodo;
          lista *plista;
          if (p != NULL) {
                plista = (lista *)malloc(sizeof(struct tlista));
                if (plista == NULL) {
                    return NULL;
                }
                if(direzione == 's') {
                    plista = appendilista(p->pleft,direzione);
                }
                else {
                    plista = appendilista(p->pright,direzione);
                }
                return plista;
          } else {
                return NULL;
          }
    }
    Ora mi rimprovererai per i nomi ma purtroppo devo seguire alcune specifiche...
    Buji

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.