//liste con vettori //si utilizzano parametri reference #include #include #include "lista.h" //definizione (implementazione) degli operatori (metodi) di Nodo Nodo::Nodo(){}; Nodo::Nodo(tipoelem_nodo label){etichetta=label;}; void Nodo::setEtichetta(tipoelem_nodo label){etichetta=label;}; tipoelem_nodo Nodo::getEtichetta(){return etichetta;}; boolean Nodo::operator !=(int src){ return (etichetta!=(tipoelem_nodo)src); } void Nodo::operator --(){ etichetta--; }; //definizione (implementazione) degli operatori (metodi) fondamentali di Lista void Lista::crealista(){lunghezza=0;} boolean Lista::listavuota(){return finelista(primolista());} tipoelem Lista::leggilista(pos p){ //pre: L = < a 1, a 2, … , a n> p = pos(i) 1 <= i <= n return lista[p-1];} void Lista::scrivilista(tipoelem a, pos p){lista[p-1]=a;} pos Lista::primolista(){return 1;} boolean Lista::finelista(pos p){return (lunghezza==p-1);} pos Lista::succLista(pos p){ //pre: p=pos(i), 0<=i<=n+1 if (!finelista(p)){ return p+1; } return p; } pos Lista::predLista(pos p){ if (p!=primolista()){ return (pos)p-1; } return p; } void Lista::inslista(tipoelem a, pos p){ //precondizione: p = pos(i), 1 <= i <= n+1 //controllare che la lista non sia piena!!!!!!!!<============= if ((p<=lunghezza+1)&&(p>=0)){ //creo lo spazio per l'elemento p for (int i=lunghezza;i>=p;i--){ lista[i]=lista[i-1]; } //inserisco p nella lista lista[p-1]=a; lunghezza++; //cout<<"inserito: "<