manejo de colas (listas enlazada circular)

program colas_lista_enlazada_circular;
 
Type
    tCola = ^nodo;
    nodo = Record
         clave : Integer;
         sig : tCola;
    End;
 
Procedure Crear(Var c1 : tcola);
begin
     c1 := NIL
End;
 
Function Vacia(c1 : tcola) : Boolean;
Begin
     Vacia := c1 = NIL
End;
 
Procedure Encolar(Var c1 : tcola; elem : Integer);
Var
   nuevo : tcola;
begin
     new(nuevo);
     nuevo^.clave := elem;
     if c1 = NIL then
        nuevo^.sig := nuevo
     else begin
          nuevo^.sig := c1^.sig;
          c1^.sig := nuevo
     end;
     c1 := nuevo
end;
 
Procedure Desencolar(Var c1 : tcola; Var elem : Integer);
Var
   nuevo : tcola;
Begin
     elem := c1^.sig^.clave;
     if c1 = c1^.sig then begin
        dispose(c1);
        c1 := NIL
     end
     else begin
        nuevo := c1^.sig;
        c1^.sig := nuevo^.sig;
        dispose(nuevo)
     end
end;
 
  { Programa de prueba }
Var
   cola : tcola;
   elem : Integer;
begin
     crear(cola);
     if (vacia(cola)) then writeln('Cola vacia');
     encolar(cola, 3);
     desencolar(cola, elem)
end.

¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.

Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C [c]Código en C[/c]
  • Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].

De esta manera el código coloreas el código.

Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:

Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.

¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)