4. Cola circular 1.-) Es una lista lineal en la que el último nodo a punto al primero. Las listas circular evitan excepción en la operación que se realiza sobre ellos. No existe casos especiales, cada nodo siempre tiene uno anterior y uno siguiente. 2.-) En algunas listas circular e añade un nodo especial de sebera, de ese modo se evita la única excepción posible, le de que la lista este vacío. Cola listo 1.-) es un conjunto de lentos llamados nodos en los que cada uno de ellos contiene un doto y también la dirección del siguiente nodo y el ultimo no apunto a nodo. 2.-) es las listas abierta existe un nodo especial: normalmente dinero que nuestro listo es un puntero a ese primer nodo y llamaremos a ese nodo la cabeza de la lista. Eso es porque median ese único puntero podemos acceder a todo la lista. 3.-)cuando se trabajo con cola listo con memoria denomino el puntero que se uso para acceder a la lista vale NULL, se dice que la cola esta vacía. TIPOS DE COLA
5. CONST MAXIMO=20; TYPE TIPOCOLA=RECORD; DATOS:ARRAY[1..MAXIMO] OF INTEGER; FINAL:1.. MAXIMO; END; VAR COLA: TIPOCOLA; PROCEDURE INICOLA; BEGIN COLA.FINAL:=0; END; PROCEDURE INSERTAR; BEGIN INC (FINAL); COLA.DATOS[COLA.FINAL]:=ELEMENTO; END; CREAR SE CREA LA COLA VACIA CARGAR (AÑADIR, ENTRAR, PUSH): SE AÑADE UN ELEMENTO PROCEDURE ELIMINAR; BEGIN for k:=1 to COLA.FINAL-1 do COLA.DATOS[k]:=COLA.DATO[K+1]; (SACAR, SALIR, POP): SE ELIMINA EL ELEMENTO ELIMINAR PROCEDURE INSERTAR; BEGIN INC (FINAL); COLA.DATOS[COLA.FINAL]:=ELEMENTO; END;
6. TYPE PUNTERO:=^NODO; NODO:= RECORD; INFO:= INTEGER; SIG := PUNTERO; END; PROCEDURE crearLista; BEGIN new(lista); lista^_nodo:= 1; lista^.siguiente=nil; END; Se crea la cola vacía crear PROCEDURE INSERTAR; BEGIN IF COLA_VACIA(COLA) THEN BEGIN NEW(AUX); AUX^.DATO:=ELEM; COLA.FINAL^.SIG=AUX; COLA.FINAL:=AUX; END ELSE BEGIN NEW(AUX); AUX^.DATO=ELEM; COLA.FINAL:=AUX; END; END; (AÑADIR, ENTRAR, PUSH): SE AÑADE UN ELEMENTO cargar PROCEDURE Borrar; Var Igual, anterior:=COLA; Begin { se debe buscar la posición del elemento a borrar } Actual:=l, Anterior:=l; While (actual <> nil) and (actual^.clave <> elem) do Begin Anterior:= actual; Actual:=actual^.siguiente; End; If (actual <> nil) and (actual^. Clave<> elem) then Begin If (anterior=actual) then L:=actual^. Sig { borrar el primero } Else Anterior^. Sig:= actual^.sig; Dispose(actual); End; End; (SACAR, SALIR, POP): SE ELIMINA EL ELEMENTO ELIMINAR