|
|
RUMBO A LA EXCELENCIA EN EDUCACIÓN SUPERIOR |
|
|
COLAS DE PRIORIDAD
|
|
Las colas de prioridad se pueden implementar de muy diversas maneras. Este tipo abstracto de datos ha de permitir; al menos, las dos siguientes operaciones : insertar y eliminar el de menor prioridad. Insertar: Inserta como último elemento de todos los que tengan la misma prioridad. Eliminar: Se ha de eliminar el primero de entre los que tengan menor prioridad. Ejemplo: con una listas enlazadas ordenadas, al ordenarla ascedentemente. Una forma eficiente y sencilla es implementarla con un array en el que sus elementos sean punteros a colas. Los elementos se colocaran en una u otra cola directamente según su prioridad. La implementación se efectuará de la forma últimamente mencionada. const Maxpr=10; Declaración Tipo prioridad= 1.. Maxpr; colaprioridad=array[prioridad] of colas; procedimiento inicializarcp(var cp:colaprioridad); funcion vaciacp(cp:colaprioridad):boolean; procedimiento insertarcp(var cp:colaprioridad; e:elementos; pr:prioridad); procedimiento eliminarcp(var cp: colaprioridad); procedimento primerocp(cp:colaprioridad; var e: elementos); implementación procedimiento inicializarcp; var i: prioridad; inicio Para i:= 1 to maxpr do inicializar(cp[i]); fin_procedimiento; funcion encontrado (cp:colaprioridad):integer; var i:integer; v: boolean; inicio v:=verdadero; i:=0; mientras (I<maxpr) y v entonces inicio i:=i+1; si not Vacia(cp[i]) entonces v:= false fin_mientras si not v entonces encontrado := i si_no encontrado := 0 fin_procedimiento; funcion vaciacp; inicio vaciacp:= encontrado(cp)= 0 fin_procedimiento; Procedimiento insertarcp; inicio poner (cp[pr],e) fin_procedimento; Procedimento primerocp; var p: integer; inicio p:=encontrado(cp); if p<>0 then primero (cp[p],e) fin_procedimiento Procedimiento eliminarcp; var p:integer; inicio p:=encontrado (cp); si p<> 0 entonces quitar (cp [p]) fin_procedimento fin.
|
Buscadores Universidades U.C UJAP
|
Elaborado
por ; Dinora Soto Castillo,. |