1 Liste

Esercizio 1.1

Implementare
 int lunghezza(Lista);
 void inverti(Lista &);
 bool palindoma(Lista);
Le funzioni possono anche essere implementate come metodi della classe astratta LinearList.

Esercizio 1.2

Liste lineari ordinate: particolare tipo di lista in cui l'ordine sequenziale degli elementi è legato ad una relazione d'ordine definita sugli elementi.
Esempio: se gli elementi sono stringhe si suppone che l'odinamento sia per chiave alfabetica. A tale scopo sarà necessario definire gli operatori '<', '<=' e '>' per il tipo di dato stringa (Tali operatori sono già definiti per il tipo di dato string, definito nella libreria string. ).

Esercizio 1.3

Multilista: supponendo di voler rappresentare un numero intero I mediante una lista, tale che il valore dell'elemento i-esimo della lista corrisponda a quello dell'i-esima cifra di I, definire una lista di interi ed implementare le funzioni per
 l1 --> 1 3 5 6
 l2 --> 3 4
 l3 --> 5 6 7
 l4 --> 1

Suggerimenti per la realizzazione con cursori

Definire la variabile SPAZIO come membro della classe lista di tipo static.

Di norma oggetti diversi della stessa classe non condividono risorse di memoria. Per poter realizzare una comunicazione di ambiente condiviso bisogna dichiarare l'attributo (comune a tutte le istanze) come static. Gli attributi static possono essere visti come elementi propri della classe, non dell'istanza.

class Lista
  {

  public:
    ...
    Lista();    //costruttore
    ~Lista();   //distruttore

    // operatori
    void crealista();
    ...

  private:
    Static componenteSpazio SPAZIO[100];
    // metodi per la manipolazione dell'attributo SPAZIO
    ...
    // altri dati privati
  };
componenteSpazio è un tipo strutturato costituito da una componente 'elemento' di tipo tipoelem e da una componente successivo di tipo posizione.