TAD Listas
Publicado por Zugen (3 intervenciones) el 30/11/2006 11:59:12
Estoy realizando una unidad en PASCAL que implementa las operaciones normales de una lista, una de ellas es que dada una lista nos devuelva el resto, es decir, la misma lista menos el primer elemento y me he quedado atascado, no se como seguir, copio lo que llevo de código por si alguien puede ayudar:
UNIT ListaEst;
INTERFACE
CONST
MAX = 10;
TYPE
TipoElemento = integer;
TipoLista = RECORD
almacen: ARRAY [1..MAX] OF TipoElemento;
primer: TipoElemento;
END;
PROCEDURE CrearVacia(VAR lista:TipoLista);
PROCEDURE Construir(elem:TipoElemento; VAR lista:TipoLista);
FUNCTION Primero(lista:TipoLista):TipoElemento;
PROCEDURE Resto(lista:TipoLista;VAR restoLista:TipoLista);
FUNCTION EsVacia(lista:TipoLista):boolean;
FUNCTION Longitud(lista:TipoLista):integer;
IMPLEMENTATION
PROCEDURE CrearVacia(VAR lista:TipoLista);
BEGIN
Lista.primer:=0;
END;
PROCEDURE Construir(elem:TipoElemento; VAR lista:TipoLista);
BEGIN
lista.primer:=elem;
END;
FUNCTION Primero(lista:TipoLista):TipoElemento;
BEGIN
Primero:=lista.primer;
END;
PROCEDURE Resto(VAR lista:TipoLista);
BEGIN
{AQUI SE ENCUENTRA MI PROBLEMA}
END;
FUNCTION EsVacia(lista:TipoLista):boolean;
BEGIN
IF (Primero(lista)=0) THEN
EsVacia:=TRUE
ELSE
EsVacia:=FALSE;
END;
FUNCTION Longitud(lista:TipoLista):integer;
BEGIN
IF EsVacia(lista) THEN
Longitud:=0
ELSE
Longitud:=1 + Longitud(Resto(lista));
END;
Muchas gracias por adelantado. Un saludo.
UNIT ListaEst;
INTERFACE
CONST
MAX = 10;
TYPE
TipoElemento = integer;
TipoLista = RECORD
almacen: ARRAY [1..MAX] OF TipoElemento;
primer: TipoElemento;
END;
PROCEDURE CrearVacia(VAR lista:TipoLista);
PROCEDURE Construir(elem:TipoElemento; VAR lista:TipoLista);
FUNCTION Primero(lista:TipoLista):TipoElemento;
PROCEDURE Resto(lista:TipoLista;VAR restoLista:TipoLista);
FUNCTION EsVacia(lista:TipoLista):boolean;
FUNCTION Longitud(lista:TipoLista):integer;
IMPLEMENTATION
PROCEDURE CrearVacia(VAR lista:TipoLista);
BEGIN
Lista.primer:=0;
END;
PROCEDURE Construir(elem:TipoElemento; VAR lista:TipoLista);
BEGIN
lista.primer:=elem;
END;
FUNCTION Primero(lista:TipoLista):TipoElemento;
BEGIN
Primero:=lista.primer;
END;
PROCEDURE Resto(VAR lista:TipoLista);
BEGIN
{AQUI SE ENCUENTRA MI PROBLEMA}
END;
FUNCTION EsVacia(lista:TipoLista):boolean;
BEGIN
IF (Primero(lista)=0) THEN
EsVacia:=TRUE
ELSE
EsVacia:=FALSE;
END;
FUNCTION Longitud(lista:TipoLista):integer;
BEGIN
IF EsVacia(lista) THEN
Longitud:=0
ELSE
Longitud:=1 + Longitud(Resto(lista));
END;
Muchas gracias por adelantado. Un saludo.
Valora esta pregunta


0