Listas circulares
Pilas
 
Listas doblemente circulares
Administrador
Plan de Curso
Modulo I
Unidad1
Unidad2
Modulo II
Unidad3
Unidad4
Modulo III

Unidad5

Unidad6
Foros
Chat

Blogs

Pascal

Descarga

Firefox

Email

Link

Son listas circulares con punteros que permiten recorrerlas tanto en el sentido de avance de las agujas de un reloj como en el sentido contrario. Es útil y frecuente implementarlas con un nodo cabecera, permanentemente asociado a la existencia de la lista, que separa el principio del final de la misma y cuyo campo para almacenar información no se utiliza como el de los restantes elementos de la lista.

Citemos un ejemplo:

Type

cadena=^nodoc;
nodoc=record

izq,der:cadena;

case sw:boolean of

true:(n:integer);

false:(c:char);

end;

Procedure CadenaVacia(var L: cadena);

Procedura poner(var L:cadena; car:char);

function esvacia(L:cadena):boolean;

Procedure Concatenar(Var L:cadena; L1:cadena);

Function longitud(L:cadena): integer;

Procedure borrarcar(var L:cadena; car:char);

funtion caracterN (L: cadena; n:integer):char;

Implementation

procedure cadenavacia;

begin

new(L); L^.sw:=true;L^.n:=0;

L^der:=L; L^.izq:=L

end;


Procedure Poner;

var

nuevo:cadena;

begin

new(nuevo);nuevo^.sw:=false;nuevo^.c:=car;

L^.n:=L^.n+1

nuevo^.izq:=L^.izq;

L^.izq^.der:=nuevo;

nuevo^.der:=L;

L^.izq:=nuevo

end;


Function esvacia;

begin

esvacia:=L=L^.der

end;


Function Longitud;

begin

longitud:=L^.n

end;


Procedure borrarcar;

var

q,borra:cadena;

begin

q:=L^.der;

While q<>L do

If q^.c=car then

Begin

borra:=q;

q^.izq^.der:=q^.der; q^.der^.izq:=q^.izq; q:=q^.der;

dispose(borra)

end

else

q:=q^.der;

end


function caracterN;

var

i: integer;

begin

IF (n>0) and (n<=L^.n) then

begin

for I:=1 to n do L:= L^.der;

CaracterN:=L^.c

end

else

Caracter:= #0

end;


Procedure Concatenar;

var

nuevo,aux:cadena;

i:integer;

car:char;

begin

aux:=L1^.der;

for i:= 1 to L1^.n do

begin

car:=aux:=aux^.der;

new(nuevo);nuevo^.sw:=false; nuevo^.c:=car;

L^.n:=L^.n+1;

nuevo^.izq:=L^.izq; L^.izq^.der:=nuevo;

nuevo^.der:=L;L^.izq:=nuevo

end;

end;

end


 

Google
Imprimir
listas circulares
pilas

Elaborado por ; Dinora Soto Castillo,. Dinora334@hotmail.com, dinorasoto2004@yahoo.comWebMaster : CIIUNA
WebMaster : CIIUNA.Optimizado para Internet Explorer y resolución 800x600.