Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- UNIT uPilaDinamica;
- INTERFACE
- USES uElementoInteger;
- {PARAMETROS GENERICOS: Funciones Asignar(), SonIguales(), Imprimir() propias de cada tipo de elemento}
- TYPE
- TPila = ^TNodo;
- TNodo = RECORD
- info : TElemento;
- ant : TPila;
- END;
- {Constructoras generadoras}
- PROCEDURE CrearPilaVacia(VAR p : TPila);
- PROCEDURE Apilar(VAR p : TPila; e : TElemento);
- {Constructoras no generadoras}
- PROCEDURE Desapilar(VAR p : TPila);
- PROCEDURE Copiar(VAR p : TPila; q : TPila);
- PROCEDURE DestruirPila(VAR p : TPila);
- {Observadoras selectoras}
- PROCEDURE Cima(VAR p : TPila; VAR e : TElemento);
- {Observadoras no selectoras}
- FUNCTION EsPilaVacia(p : TPila):boolean;
- IMPLEMENTATION
- {Constructoras generadoras}
- PROCEDURE CrearPilaVacia(VAR p : TPila);
- BEGIN
- p := NIL;
- END;
- PROCEDURE Apilar(VAR p : TPila; e : TElemento);
- VAR
- aux : TPila;
- BEGIN
- new(aux);
- Asignar(aux^.info, e);
- aux^.ant := p;
- p := aux;
- END;
- {Constructoras no generadoras}
- PROCEDURE Desapilar(VAR p : TPila);
- VAR
- aux : TPila;
- BEGIN
- IF (NOT EsPilaVacia(p)) THEN BEGIN
- aux := p;
- p := p^.ant;
- dispose(aux);
- END;
- END;
- PROCEDURE Copiar(VAR p : TPila; q : TPila);
- VAR
- aux : TPila;
- e : TElemento;
- BEGIN
- CrearPilaVacia(aux);
- {Se copia todo el contenido de p en q, manteniendo el orden}
- WHILE (NOT EsPilaVacia(q)) DO BEGIN
- Cima(p, e);
- Apilar(aux, e);
- Desapilar(q);
- END;
- WHILE (NOT EsPilaVacia(aux)) DO BEGIN
- Cima(aux, e);
- Apilar(p, e);
- Desapilar(aux);
- END;
- END;
- PROCEDURE DestruirPila(VAR p : TPila);
- BEGIN
- WHILE (NOT EsPilaVacia(p)) DO BEGIN
- Desapilar(p);
- END;
- END;
- {Observadoras selectoras}
- PROCEDURE Cima(VAR p : TPila; VAR e : TElemento);
- BEGIN
- IF (NOT EsPilaVacia(p)) THEN
- Asignar(e, p^.info);
- END;
- {Observadoras no selectoras}
- FUNCTION EsPilaVacia(p : TPila):boolean;
- BEGIN
- IF (p = NIL) THEN
- EsPilaVacia := TRUE
- ELSE
- EsPilaVacia := FALSE;
- END;
- END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement