Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [c] cancellazione liste concatenate

    ciao a todos..ho bisogno di un consiglio.
    Ho una struttura "liste di liste" ,dove sulla lista principale ci sono delle parole,mentre nelle relative sottoliste ho delle altre parole che iniziano per la stessa lettera.
    Per intenderci, sotto il nodo dove e' contenuto la parola "cane" avro' tutte e sole le parole che iniziano con la "c".
    Il prob e' di Come fare a cancellare 1 nodo principale , come quello che contiene "cane" e a non perdere tutta la sottolista relativa????
    Cioe' come faccio a far salire il nodo sottostante a "cane" al posto di esso?????

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    bisogna vedere come vuoi effettuare la cancellazione; se la vuoi fare con una funzione che prende il puntatore al nodo da cancellare, allora devi passare il puntatore al puntatore al nodo in modo da farlo puntare all'elemento successivo:

    void cancella(tipolista** p){
    *p = *p ->next;
    }

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Il fatto e' che il nodo da cancellare e' sulla lista principale e voglio far diventare il nuovo nodo al posto di quello cancellato, il primo sottostante nella sua sottolista.Quindi far salire la sottolista di 1 livello tanto x intenderci.
    Ma nn so' come fare!! xke' so' come cancellare un nodo su un 'unica lista ma qui il discorso e' diverso!!!

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    ma se hai il puntatore al nodo testa della lista principale sei ingrado di scorrere tale lista fino al nodo che precede quello da cancellare e quindi collegare il precedente con il successivo del cancellato

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    Si ma io accedo alla mia sottolista dal mio nodo principale con l'istruzione "i->p" ,dove "i" e' il puntatore al nodo principale e "r" e' il puntatore alla sottolista.Quindi se cancello il nodo sulla lista principale, come faccio il collegamento con la sua sottolista?Per collegarlo con i puntatori adiacenti sulla lista principale lo so fare ma x la sua sottolista nn so come fare!!!

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    ma i nodi sulla lista principale sono delos tesso tipo di quelli delle sottoliste? dacci la definizione dei tipi..comqunue devi semplicemnte mantenerti i puntatori agli elementi precedenti...

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  7. #7
    La struttura e' questa:

    //struttura per le sottoliste collegate a ogni nodo della lista principale
    typedef struct _parola
    {
    int flagMist;
    char word[MAXSTRING];
    struct _parola *next;
    struct _parola *prev;

    }parola;

    //struttura della lista principale
    typedef struct _index
    {
    int flagMistI;
    char wordI[MAXSTRING];
    parola *p;
    struct _index *next;
    struct _index *prev;

    }index;

    typedef index index1; //definizione della seconda lista principale
    typedef parola parola1; //definizione della seconda struttura per le sottoliste

    index *inizioI=NULL; //puntatore all'inizio della prima lista principale
    parola *inizioP=NULL; //puntatore all'inizio della prima struttura lista di liste

    index1 *inizioI1=NULL; //puntatore all'inizio della seconda lista principale
    parola1 *inizioP1=NULL; //puntatore all'inizio della seconda struttura lista di liste

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    se vuoi cancellare il primo nodo di una sttolista di index, scorri index fino all'elemento che contiene la sottolista di cui cancellare la testa, sia questo tmp, quindi fai:

    parola *ptmp = tmp -> p;
    tmp -> p = tmp -> p -> next;
    if(tmp -> p != NULL)
    tmp -> p -> prev = null;
    free(ptmp);

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  9. #9
    ok adesso provo..t faccio sapere, cmq vada t ringrazio gia' in anticipo

  10. #10
    il codice funziona ma io voglio cancellare un nodo della mia lista principale "index". E' questo il prob! E credo sia anche complicato farlo..Come faccio?

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.