Codice PHP:
#include <iostream>
#include <cstdlib>
#include "ListaPtr.h"
using namespace std;
//Il costruttore mi crea semplicemente la lista con puntatore
ListaPtr::ListaPtr() {
creaLista();
}
//Distruttore che elimina tutti gli elementi della lista
ListaPtr::~ListaPtr() {
distruggiLista();
}
//Creando la lista Imposto il puntatore Null
void ListaPtr::creaLista()
{
primo=NULL;
}
//Metodo per eliminare tutti gli elementi della lista
void ListaPtr::distruggiLista()
{
posizione tmp;
tmp=primo;
while(tmp!=NULL)
{
cancLista(tmp);
tmp=primo;
}
}
//Metodo che mi controlla se la lista è vuota cioè se il puntatore punta a Null
bool ListaPtr::listaVuota()
{
return (primo==NULL);
}
//Metodo per leggere un elemento della lista
elementoLista ListaPtr::leggiLista(posizione p)
{
if(!fineLista(p))
return p->getEtichetta();
}
//Metodo per scrivere un elemento all'interno di una lista
void ListaPtr::scriviLista(elementoLista e,posizione p)
{
if(!fineLista(p))
p->setEtichetta(e);
}
//Metodo che mi restituisce il primo elemento della lista
posizione ListaPtr::primoLista()
{
return(primo);
}
//Metodo boolean che mi dice se la lista è finita
bool ListaPtr::fineLista(posizione p)
{
return(p==NULL);
}
//Metodo che mi ritorna l'elemento successivo della lista
posizione ListaPtr::succLista(posizione p)
{
if(!fineLista(p))
return (p->getSuccessivo());
else
return (NULL);
}
//Metodo che mi ritorna l'elemento precedente della lista
posizione ListaPtr::predLista(posizione p)
{
if(p==primo)
return (NULL);
else
{
posizione tmp;
tmp=primo;
while (tmp->getSuccessivo()!=p)
tmp=tmp->getSuccessivo();
return(tmp);
}
}
//Metodo che inserisce un elemento all'interno della lista
void ListaPtr::insLista(elementoLista e,posizione p)
{
posizione tmp;
tmp=new NodoLista(e,p);
if(p==primo)
primo=tmp;
else
predLista(p)->setSuccessivo(tmp);
}
//Metodo che cancella un elemento all'interno della lista
void ListaPtr::cancLista(posizione p)
{
if((!listaVuota()) && (p!=NULL))
{
if(p==primo)
{
primo=p->getSuccessivo();
delete(p);
}else {
predLista(p)->setSuccessivo(p->getSuccessivo());
delete(p);
}
}
}
//Metodo che mi restituisce l'ultimo elemento della lista
posizione ListaPtr::ultimoLista()
{
posizione tmp;
tmp=primo;
while (tmp->getSuccessivo() != NULL)
tmp=tmp->getSuccessivo();
return (tmp);
}