Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++]Scorrimento inverso lista

    Ciao a tutti, qualcuno sa dirmi gentilmente come poter scorrere una lista dinamica in senso inverso?
    mi spiego, se ad esempio ho una lista di 3 nodi, dichiaro testa il primo nodo, scorro la lista con:
    " While(Testa!=NULL)
    {
    testa= testa -> next // elemento successivo
    }
    e si fermerà quindi quando ho fatto scorrere tutta la lista.

    La mia domanda è, posso partire invece dall'ultimo elemento al primo in qualche modo? cioè arrivare dall'ultimo nodo alla mia testa iniziale.
    grazie
    Ciao

  2. #2
    Certo, con una doubly-linked-list è molto semplice.
    Fracty - The Fractal Generator



    If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.

  3. #3
    cioè?mi faresti un esempio semplice per favore?grazie

  4. #4
    Leggiti questo articolo: Doubly Linked List.

    Essenzialmente una lista concatenata bi-linkata è una struttura dati astratta i cui nodi, oltre al dato che desideri immaganizzare ed oltre al puntatore al prossimo nodo della lista, contentono come membro un puntatore al nodo precedente:

    codice:
    typedef struct node
    {
         struct node *next;
         struct node *previous;
         void *data;
    } NODE;
    Come vedi in questo modo quando costruisci la lista aggiungendovi un nuovo nodo questo avrà il proprio puntatore al nodo che lo precede, permettendoti cosi di ripercorrere la lista dall'ultimo al primo nodo, semplicemente utilizzando un procedimento praticamente identico a quello postato da te, una cosa del tipo:



    codice:
    NODE *currentPtr = tailPtr;
    
    while( currentPtr != NULL )
    {
         currentPtr = currentPtr->previous;
    }
    Ricordandoti sempre che in questo caso il nodo precedente alla testa della lista va inizializzato a NULL.
    Fracty - The Fractal Generator



    If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.

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.