//
// lista.cpp
// pila_131031
//
// Created by Paolo on 05/11/13.
// Copyright (c) 2013 dib. All rights reserved.
//
#include <assert.h>
#include "lista.h"
void Lista::creaLista (){
testa=0;
}
boolean Lista::listaVuota(){
return (testa==0);
}
tipoelemLista Lista::leggiLista(posizione p){
//TODO: verificare che p sia una posizione valida
return p->elemento;
}
void Lista::scriviLista(tipoelemLista t, posizione p){
assert(!listaVuota());
p->elemento=t;
}
posizione Lista::primoLista(){
return testa;
}
void Lista::insLista(tipoelemLista a, posizione &p){
posizione temp = new NodoLista();
temp->elemento = a;
temp->succ=p;
if (p==primoLista()) {
testa=temp;
}else{
posizione prec=predLista(p);
prec->succ=temp;
}
p=temp;
}
void Lista::cancLista(posizione p){
assert(!listaVuota());//ci dev'essere qualcosa in lista
if (p==primoLista()) {
testa=testa->succ;
}else{
posizione temp;
temp = predLista(p);
temp->succ=p->succ;
p->succ=0;
}
delete p;
}
boolean Lista::fineLista(posizione p){
return (p==0)?true:false;
}
posizione Lista::succLista(posizione p){
assert(!fineLista(p));
return p->succ;
}
posizione Lista::predLista(posizione p){
posizione temp=primoLista();
while (!fineLista(temp) && (temp->succ != p)) {
temp=succLista(temp);
}
return temp;//TODO: verificare
}
Lista::Lista(){
creaLista();
}