RE:¿como puedo hacer una unidad de colas y pilas?
Lo primero que debes hacer (suponiendo que sepas como se crea una unidad) es implementar todos los subprogramas referentes a pilas y colas, es decir, pilavacia, crear, inserprim, inserfin, suprime, etc. Esta unidad con todos los subprogramas implementados te será muy útil para cualquier programa que haga uso de pilas y colas. Te pongo uno que hice:
UNIT listas;
INTERFACE
TYPE
tElem = real;
PtrNodo = ^tNodo;
tNodo = RECORD
info: tElem;
sig: PtrNodo;
END; {tNodo}
PROCEDURE Listavacia (VAR L: PtrNodo);
FUNCTION Esvacia (L: PtrNodo): boolean;
FUNCTION Localiza (x: tElem; L: PtrNodo): PtrNodo;
FUNCTION Existe (x: tElem; L: PtrNodo): Boolean;
FUNCTION Anterior (P,L: PtrNodo): PtrNodo;
FUNCTION Siguiente (P,L: PtrNodo): PtrNodo;
FUNCTION Ultimo (L: PtrNodo): PtrNodo;
FUNCTION Crear (x: tElem): PtrNodo;
PROCEDURE Inserprim (x: tElem; VAR L: PtrNodo);
PROCEDURE Inserta (x: tElem; P: PtrNodo; VAR L: PtrNodo);
PROCEDURE Inserfin (x: tElem; VAR L: PtrNodo);
PROCEDURE Suprime (x: tElem; VAR L: PtrNodo);
PROCEDURE Suprimedir (P: PtrNodo; VAR L: PtrNodo);
PROCEDURE Anula (VAR L: PtrNodo);
PROCEDURE Visualiza_pol (L: PtrNodo);
FUNCTION Posinser (x: tElem; L: PtrNodo): PtrNodo;
PROCEDURE Inserorden (x: tElem; VAR L: PtrNodo);
FUNCTION Buscorden (x: tElem; L: PtrNodo): PtrNodo;
FUNCTION Nnodos (L: Ptrnodo): integer;
IMPLEMENTATION
<Aquí deben de estar todos los subprogramas implementados, no los pongo porque el servidor del foro me dice que mi respuesta es muy larga>
END.
Suerte, espero que te hagas una idea.