HELP!!!USO E UTILIZZO DELLE LISTE

di il
3 risposte

HELP!!!USO E UTILIZZO DELLE LISTE

Ciao a tutti mi sono appena iscritto in questo forum , perche penso che voi mi possiate aiutare su alcuni problemi della programmazione in c++(borland c++).Avrei diverse domande da porvi, in particolare sull'uso e utilizzo delle liste.
1)Mi sapete spiegare bene cosa sono le liste semplici?Io studiando sul libro so soltanto che le liste sono formate da una informazione e da un puntatore.(l' ultimo e' NULL).
2)Che differenze ci sono tra vettori(ma anche arrey)e una lista?
3)come faccio, una volta creata una lista composta da diversi campi del record(es.char nome[10]char cognome[20]....),a visualizzare un elemento specifico della lista?
Io so che se converto una lista in un arrey e devo visualizzare per esempio il cinquantesimo elemento, basta che scrivo: nome vettore[49].visualizza();----Dove visualizza e' un metodo della classe. Grazie

3 Risposte

  • Re: HELP!!!USO E UTILIZZO DELLE LISTE

    
    Le liste sono delle strutture allocate dinamicamente che si collegano tra loro utilizzando puntatori alle stesse.
    Nell'esempio sotto è raffigurata una lista concatenata bidirezionale.
    
            +----+    +----+     +----+
            |DATI|    |DATI|     |DATI|
            |    |    |    |     |    |
    NULL <---Prev| <---Prev| <--- Prev|
            |Next---> |Next--->  |Next---> NULL
            +----+    +----+     +----+
    
    I vantaggi rispetto agli array sono:
    1) Nessun pre-dimensionamento
       Ogni nuova struttura allocata verrà concatenata alla lista ampliandola. 
    2) Risparmio di memoria
       Vengono allocate solo le strutture utilizzate
    3) Garbage collection
       I blocchi hanno tutti la stessa dimensione ed il ridimensionamendo, liberando e/o allocando strutture, evita la perdita di memoria che normalmente accade con il re-dimensionando degli array.
    
    Gli svantaggi sono:
    1) Non sono indicizzate.
       Si scorrono sequenzialmente
    2) Più lente.
       Lo scorrimento di una lista è più lento di uno indice array
    2) Più memoria per elemento.
       Ogni elemento inserito dovrà avere almeno un puntatore aggiuntivo
    
    Saluti,
    Max
  • Re: HELP!!!USO E UTILIZZO DELLE LISTE

    Grazie mille Max dell'aiuto,mi serviva proprio. Comunque rimane il fatto che ancora nn ho capito molto bene come si faccia a scorrere all'interno della lista.A scuola mi dicono , che per conoscere un dato particolare della lista l'unico modo e' quello di scorrerela tutta dall'inizio.Possibile?Oppure c'e' qualche giochino con i puntatori che mi faccia arrivare subito al dunque?
  • Re: HELP!!!USO E UTILIZZO DELLE LISTE

    Per scorrere la lista è sufficiente posizionarsi sul primo elemento della lista e proseguire sequenzialmente.
    Esempio sequenza lista in pseudo codice:
    
    lista=primo_della_lista
    while (lista)  
    {
      ...
      operazioni varie
      ...
      lista=lista->next 
    }
    
    Esempio array in pseudo codice:
    
    indice=0
    while (indice < max_indice)  
    {
      ...
      operazioni varie
      ...
      indice++
    }
    
    Come vedi, in una visualizzazione o in una ricerca, lo scorrimento è simile in entrambi i casi.
    Quello che non si può fare (o almeno non nelle normali liste concatenate) è avere un'indice come negli array.
    Cioè se volessi accedere al 10^ elemento dell'array sarebbe sufficiente usare array[9],
    mentre per le liste può esser fatto contando... ovviamente a svantaggio del tempo.
    
    lista=primo_della_lista
    for (giro=0 ... n)
    {
      lista=lista->next 
    }
    *** qui ho il puntatore all'elemento n ***
    
    Le liste comunque rappresentano un'ottima soluzione e in moltissimi casi sono molto meglio degli array.

    Saluti,
    Max
Devi accedere o registrarti per scrivere nel forum
3 risposte