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

    [C] - Pop di una lista doppia

    Salve a tutti...

    come ci si comporta con una pop di una lista doppia?

    Per una lista semplice è ok, ma per una con doppi puntatori mi perdo subito...

    Help me!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mostra dove ti perdi ... che ti ritroviamo ...

  3. #3
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    la lista doppia sarebbe l'equivalente di quella concatenata con la sola differenza che invece di puntare solo al successivo punta pure al precedente?

  4. #4
    Prova a sviluparlo in questo modo (scusa l'orrendo codice):

    Nodo
    {
    valore
    back
    next
    }


    sputa valore
    tmp = testa
    testa = testa->next
    elimina tmp
    testa->back = NULL
    Experience is what you get when you don’t get what you want

  5. #5
    allora io ho la mia bella pop...

    Codice PHP:

    void Pop
    (
      LIST **
    h,
      LIST **
    n
    )
    {

         LIST *
    testa;
         
         
    /* Inizializzo testa con la testa corrente */
         
    testa = *h;
         
         if( 
    testa != NULL )
         {
            *
    testa;
                  
            
    /* Aggiorno la testa corrente con il puntatore    *
             * all'elemento successivo                        */
             
    *testa->Next;
             
    /* Il successivo ora punta a NULL */
             
    testa->Next NULL;
         } 


    Ma non so proprio come gestire il doppio puntatore, ossia i vari next e prev...

  6. #6
    Ma scusa la lista doppia
    sarebbe l'equivalente di quella concatenata con la sola differenza che invece di puntare solo al successivo punta pure al precedente?
    Experience is what you get when you don’t get what you want

  7. #7
    Originariamente inviato da Lak3d
    la lista doppia sarebbe l'equivalente di quella concatenata con la sola differenza che invece di puntare solo al successivo punta pure al precedente?
    SI!!!

  8. #8
    e quindi:

    sputa valore
    tmp = testa->back
    tmp1 = testa
    testa = testa->next
    elimina tmp1
    testa->back = tmp

    se non erro la pop è così
    Experience is what you get when you don’t get what you want

  9. #9
    Originariamente inviato da Vincent
    allora io ho la mia bella pop...

    Codice PHP:

    void Pop
    (
      LIST **
    h,
      LIST **
    n
    )
    {

         LIST *
    testa;
         
         
    /* Inizializzo testa con la testa corrente */
         
    testa = *h;
         
         if( 
    testa != NULL )
         {
            *
    testa;
                  
            
    /* Aggiorno la testa corrente con il puntatore    *
             * all'elemento successivo                        */
             
    *testa->Next;
             
    /* Il successivo ora punta a NULL */
             
    testa->Next NULL;
         } 


    Ma non so proprio come gestire il doppio puntatore, ossia i vari next e prev...
    Mi quoto da solo, infatti questa e' la mia pop per la lista semplice...ma non so come convertirla per le liste doppie...

  10. #10
    Su due piedi e senza aver mai trattato nel particolare funzioni di questo tipo..

    bool Pop ( LIST **h, LIST **n)
    {

    LIST *testa;
    LIST *tmp;

    testa = *h;

    if(( testa != NULL ) && (testa->next !=testa->next))
    {
    *n = testa;
    *h = testa->Next;
    tmp = testa->back;
    tmp -> next = testa-> next;
    tmp = testa->next;
    tmp ->back = testa->back;
    testa->back = NULL;
    testa->Next = NULL;
    }
    else if (testa != NULL)
    {
    *n = testa;
    *h = NULL;
    }
    else
    return 0;

    return 1;
    }

    Di sicuro può essere ottimizzato
    Controlla potrei aver sbagliato...
    Experience is what you get when you don’t get what you want

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.