Lista dinámica doblemente enlazada

Anuncio
Lista dinámica doblemente enlazada
function E l i m i n a r p o s i c i o n ( P : tPos ; var L i s t a : t L i s t a )
: boolean ;
begin
if
not E x i s t e p o s i c i o n (P , L i s t a )
then E l i m i n a r p o s i c i o n := f a l s e
e l s e begin
i f P=L i s t a
then begin
L i s t a := L i s t a ˆ . s i g ;
i f L i s t a <>n u l o
{mas de un e l e m e n t o }
then
L i s t a ˆ . ant := n u l o ;
end
e l s e begin
Pˆ . ant ˆ . s i g :=Pˆ . s i g ;
i f Pˆ . s i g <> n u l o
then Pˆ . s i g ˆ . ant :=Pˆ . ant
end
d i s p o s e (P)
E l i m i n a r p o s i c i o n := true ;
end
end ;
function E l i m i n a r c o n t e n i d o ( x : t I n f o ; var L i s t a :
t L i s t a ) : boolean ;
var p : t p o s ;
begin
P:= L o c a l i z a e l e m e n t o ( x , L i s t a ) ;
if
P = nulo
then E l i m i n a r c o n t e n i d o := f a l s e
e l s e begin
Eliminar nodo (P , Lista ) ;
E l i m i n a r c o n t e n i d o := true ;
end
end ;
procedure E l i m i n a r n o d o ( P : tPos ; var L i s t a : t L i s t a ) ;
{PreCond : P p o s i c i o n v a l i d a en l a l i s t a }
begin
i f P=L i s t a
then begin
L i s t a := L i s t a ˆ . s i g ;
if
L i s t a <>n u l o {mas de un e l e m e n t o }
then
L i s t a ˆ . ant := n u l o ;
end
e l s e begin
Pˆ . ant ˆ . s i g :=Pˆ . s i g ;
i f Pˆ . s i g <> n u l o
then Pˆ . s i g ˆ . ant :=Pˆ . ant
end
d i s p o s e (P)
end ;
Descargar