Professional Documents
Culture Documents
Estructuras de
datos.
2.1- Introduccin.
Qu entendemos por ESTRUCTURA? Respuestas vlidas podran ser, por
ejemplo:
Una organizacin
Un esquema
Un ordenamiento
1
Abstraccin.
Una forma de resolver un problema es analizar las caractersticas y
Abstraccin
condiciones del mismo y de este anlisis armar un modelo, el cual nos
Es describir los datos y ayuda para llegar a una solucin.
las operaciones sin
considerar los factores Ese modelo es un concepto abstracto, el cual fue creado por nosotros para
de su implementacin poder resumir el problema planteado, de una manera que nos resulta
manejable.
Al llegar a esta instancia tenemos una descripcin detallada, que puede ser
implementada en cualquier lenguaje de programacin.
VENTAJA
Independizar el diseo del programa de la
implementacin especfica de los datos
2
2.2- Pilas.
Normalmente en el da muchas veces hablamos y consideramos el
concepto de PILA, por ejemplo:
pilas de libros
pilas de cajas
pilas de ropa
Si quiero leerlo debo sacar primero los libros tcnicos que estoy leyendo
cotidianamente y que se encuentran ms arriba.
Adems es que es muy fcil agregar un nuevo libro, slo debo dejarlo
encima del ltimo y ya forma parte de la pila.
3
Este tipo de estructura tiene las siguientes caractersticas:
Donde:
PILA
Las inserciones y borrados slo se realizan en uno de los
extremos llamado CIMA.
4
2.3- Las pilas y los
lenguajes de
programacin.
Las caractersticas propias de la Pila nos permite utilizarlas en varias
aplicaciones facilitndonos:
Separar texto.
- POP: sacar
Las pilas pueden ser representadas por medio de una lista unidireccional o
por un array lineal.
ALGORITMO 36
5
1- Algoritmo INSERTAR (Push)
PUSH
Si (CIMA=MAXPILA)
entonces OVERFLOW
sino CIMA CIMA + 1
PILA(CIMA) ELEMENTO
fin_si
Si (CIMA=0)
entonces UNDERFLOW
sino ELEMENTO PILA(CIMA)
CIMA CIMA + 1
fin_si
ALGORITMO 37
2- Algoritmo SACAR (POP)
POP
Si (CIMA=0)
entonces imprimir(Pila Vacias)
sino CIMA CIMA - 1
fin_si
ALGORITMO 38
funcin VACIA(PILA:array[1..MAXPILA],CIMA:entero):boolean
inicio
Si (CIMA=0)
entonces VACIA verdadero
sino VACIA falso
fin si
fin
PILA Cada vez que un subprograma llama a otro, en la pila del sistema tiene que
almacenarse la direccin del programa que llama, a la que se debe regresar
Una de sus aplicaciones cuando el subprograma llamado termina su ejecucin.
es permitir retornar al
programa principal La direccin de retorno es siempre la siguiente instruccin a la de la
luego de ejecutar un llamada.
subprograma
El 1 en retornar ser el ltimo en efectuar la llamada y por eso
utilizaremos una pila, dado la particularidad LIFO que mencionamos.
6
Te comento una curiosidad que tenan algunas viejas calculadoras de
bolsillos, las mismas permitan ingresar las expresiones sin utilizar
parntesis. El orden de las operaciones se realizaban por la posicin de los
operadores y de los operandos, esto se llama Notacin Polaca
(desarrollada por Jan Lukasiewicz, como se imaginan de nacionalidad
polaca).
PROPUESTA:
Investigue sobre este tipo de notacin en Internet;
seguramente podr ver una aplicacin prctica del
concepto de PILA
2.4- Colas.
Las caractersticas de esta estructura de datos son:
COLAS
INSERCIN: los elementos que la forman por un extremo llamado FINAL
Maneja el concepto
FIFO ELIMINACIN: slo se realiza por un extremo llamado FRENTE
El primer elemento en Es fcil acceder al primero de la cola, es el que est disponible y tambin es
entrar es el primero en fcil ingresar a la cola; slo hay que colocarse detrs del ltimo.
salir
Una cola es una lista de elementos en la que la eliminacin de stos de
dicha lista slo se puede hacer por un extremo de la cola (FRENTE) y las
inserciones se van a realizar por otro extremo al que llamaremos (FINAL).
7
Implementacin de las colas en
memoria
Las colas se pueden enlazar:
8
Procesamiento de las colas
ALGORITMO 39
Insercin
Si ((FRENTE=1 and FINAL=N) o (FRENTE=FINAL + 1))
Entonces OVERFLOW
sino Si (FRENTE=0)
entonces FRENTE=1
FINAL =1
sino Si (FINAL=N)
entonces FINAL 1
sino FINAL FINAL + 1
fin_si
fin_si
COLA(FINAL) ELEMENTO
fin_si
ALGORITMO 40
Borrado
Si (FRENTE=0)
entonces UNDERFLOW
sino ELEMENTO COLA(FRENTE)
si (FRENTE=FINAL)
entonces FRENTE 0
FINAL 0
sino si ( FRENTE=N)
entonces FRENTE 1
sino FRENTE FRENTE + 1
fin_si
fin_si
fin_si
ALGORITMO 41
9
BICOLAS
Podemos mencionar tambin las BICOLAS que son, como su nombre lo
indica, las que permiten que los elementos que se aaden o eliminan,
puedan hacerlo en cualquier extremo.
Podemos identificar a:
BICOLAS
Bicolas de entrada restringida, si bien podemos eliminar en cualquiera
ELIMINACIN e de los extremos, la insercin slo se hace por el final.
INSERCIN: puede
hacerse en ambos Bicolas de salida restringida, al contrario que la anterior, la insercin se
extremos puede hacer por cualquiera de los extremos pero se elimina slo por el
frente.
INSERCIN: slo por el
final Los algoritmos seran:
ALGORITMO 42
INSERCION
Si (final = mximo)
entonces Overflow
si no final = final + 1
cola(final) valor
fin si
ALGORITMO 43
ELIMINACION
Si (frente > final)
entonces Underflow
si no escribir (frente o atrs,resp)
si (resp=frente)
entonces x cola(frente)
frente = frente + 1
si no si(resp=atrs)
entonces x cola(final)
final = final -1
si no ERROR
fin si
fin si
fin si
10
BICOLA DE SALIDA RESTRINGIDA:
ALGORTIMO 44
INSERCION
Si (frente > final)
entonces Overflow
si no escribir (frente o atrs,resp)
si (resp=frente)
entonces cola(frente) valor
si no si(resp=atrs)
entonces final final + 1
cola(final) valor
si no ERROR
fin si
fin si
fin si
ALGORITMO 45
ELIMINACION
Si (frente = 0)
entonces Underflow
si no x Cola(frente)
frente frente + 1
fin si
BICOLAS
Bicolas de entrada restringida: se elimina en
cualquier extremo, se inserta slo al final
Bicolas de salida restringida: se inserta en
cualquier extremo, se elimina slo al frente
11
2.5- Listas Enlazadas.
Listas.
Todos tenemos una idea de que estamos hablando cuando nos referimos a
LISTAS.
DEFINICIN DE LISTA:
Es un conjunto de elementos de un tipo dado que se
encuentran ordenandos y pueden variar en nmero
12
6. - Dividir una lista en varias sublistas
7. - Copiar la lista
8. - Borrar la lista
Listas enlazadas
Una lista enlazada o encadenada es un conjunto de elementos en los que
cada elemento contiene la posicin o direccin del siguiente elemento de
la lista.
LISTAS ENLAZADAS Cada elemento de una lista enlazada debe tener al menos dos campos, uno
que contiene el valor del elemento y otro campo enlace o linkeador que
Cada elemento contiene la posicin del siguiente elemento.
contiene la posicin del
siguiente elemento de Los elementos de una lista son enlazados por medio de los campos enlace.
la lista.
Las listas enlazadas tienen una terminologa propia que se suele utilizar
normalmente.
13
una barra inclinada ( / ),
LISTA ENLAZADA
Su almacenamiento no es contiguo, cada elemento tiene un
puntero a la direccin del prximo
Las operaciones que podemos realizar con una lista enlazada son:
14
Borrar un nodo de la lista
LISTAS ENLAZADAS EN Necesitamos tambin una variable especial llamada COMIENZO que
MEMORIA contendr la posicin ocupada por el primer nodo de la lista, y necesitamos
adems, una marca especial que es el puntero NULO 0 que indica el final
Necesitamos de la lista, los 2 arrays tendrn el mismo nmero de elementos tal que:
Variable de inicio: INFO(I) ser la informacin del nodo que ocupa la posicin I en el
COMIENZO array.
Indicador de fin: NULO ENLACE(I) contendr el ndice que apunta al siguiente nodo al I en
la lista.
DATO o INFO
15
ENLACE o SIG: campo enlace o puntero que apunta, es decir,
contiene la direccin del siguiente nodo de la lista.
DATO (PTR) --> el campo informacin del nodo apuntado por PTR.
ALGORITMO 47
Algoritmo de recorrido
Inicio
PTR START
Mientras (PTR <> 0) hacer
Leer DATO(PTR)
PTR ENLACE(PTR)
FIN MIENTRAS
FIN
PRUEBA DE ESCRITORIO
16
Comparando entre los dos mtodos podemos decir que dependiendo de la
aplicacin es decir de las operaciones que se desean ejecutar y de la
longitud que tiene la lista a implementar.
ALGORITMO 48
Algoritmo RECORRIDO
inicio
PTR COMIENZO
mientras (PTR <> NIL) hacer
{ procesar el nodo INFO (PTR) }
PTR SIG(PTR)
fin_mientras
fin
17
Bsqueda en una lista enlazada.
Para buscar una informacin en una lista tenemos que recorrer dicha lista
secuencialmente desde el comienzo de la misma hasta encontrar lo que
buscamos o bien lleguemos al final de la lista.
EJERCICIO 49
Algoritmo BUSQUEDA_NO_ORDENADA
inicio
LUG 0
PTR COMIENZO
mientras ((PTR <> NIL) y (LUG=0)) hacer
si (INFO(PTR)=ELEMENTO)
entonces LUG PTR
sino PTR SIG (PTR)
fin_si
fin_mientras
si (LUG=0)
entonces ' NO ENCONTRADO '
fin_si
fin
Ejemplo:
18
PRUEBA DE ESCRITORIO
EJERCICIO 50
Algoritmo BUSQUEDA_ORDENADA
Inicio
MARCA 0
LUG 0
PTR COMIENZO
mientras ((PTR<>NIL) y (MARCA=0)) hacer
si (INFO(PTR)=ELEMENTO)
entonces LUG PTR
MARCA 1
sino si (ELEMENTO<INFO(PTR))
entonces MARCA 1
sino PTR SIG(PTR)
fin_si
fin_si
si (LUG=0)
entonces escribir( NO ENCONTRADO)
fin_si
fin_mientras
fin
Ejemplo:
19
PRUEBA DE ESCRITORIO
OVERFLOW y UNDERFLOW
Una lista sufre un OVERFLOW cuando se intenta insertar un elemento en
dicha lista estando la lista de espacio disponible vaca, es decir, cuando no
hay ms memoria libre.
3. -Que el nodo insertar pase a ser el ltimo de la lista por lo que SIG
tendra que pasarlo a NIL
20
B) Extraer el primer nodo de DISP al que llamaremos nuevo y actualizar los
punteros necesarios en esta lista.
Consideremos que junto con la lista enlazada con la que se est trabajando
existe una lista especial (DISP) que contiene las posiciones de memoria
libre.
ALGORITMO 51
Si (DISP=0)
Entonces escribir(OVERFLOW)
sino NUEVO DISP
DISP SIG(DISP)
INFO(NUEVO) ELEMENTO
SIG(NUEVO) COMIENZO
COMIENZO NUEVO
Fin_si
21
PRUEBA DE ESCRITORIO
ALGORITMO 52
PRIMERO = 1
DISP = 1
INICIO
LEER(VALOR,LUGAR)
SI (DISP= (-1))
ENTONCES ESCRIBIR(LISTA LLENA)
SI NO NUEVO DISP
DISP ENLACE(DISP)
DATO(NUEVO) VALOR
SI PRIMERO <> DISP
ENTONCES AUX ENLACE(LUGAR)
ENLACE(LUGAR) NUEVO
ENLACE(NUEVO) AUX
SI NO ENLACE(LUGAR) NUEVO
FIN SI
FIN SI
FIN
ALGORITMO 53
Si (DISP=NIL)
Entonces OVERFLOW
sino PTR COMIENZO
mientras (PTR<>NIL)
PTR SIG(PTR)
fin_mientras
NUEVO DISP
DISP SIG(DISP)
INFO(NUEVO) ELEMENTO
22
SIG(NUEVO) NIL
SIG(PTR) NUEVO
fin_si
PASOS
En todos los algoritmos el nodo borrado se tendr que devolver a lista DISP
y se insertar al comienzo de la misma y adems se tendr que comprobar
que la lista no est vaca.
ALGORITMO 54
Si (COMIENZO=NIL)
entonces UNDERFLOW
sino BORRADO COMIENZO
23
COMIENZO SIG(COMIENZO)
SIG(BORRADO) DISP
DISP BORRADO
fin_si
ALGORITMO 55
Si (COMIENZO=NIL)
entonces UNDERFLOW
sino SIG(LUGP) SIG(LUG)
SIG(LUG) DISP
DISP LUG
fin_si
ALGORITMO 56
Si (COMIENZO= NIL)
entonces UNDERFLOW
sino Si (INFO(COMIENZO)=ELEMENTO)
entonces BORRADO COMIENZO
COMIENZO SIG(COMIENZO)
SIG(BORRADO) DISP
DISP BORRADO
sino LUGP COMIENZO
LUG SIG(COMIENZO)
mientras (LUG<>NIL y INFO(LUG)<>NIL)
LUGP LUG
LUSG SIG(LUG)
Fin_mientras
Si (INFO(LUG)=ELEMENTO)
entonces SIG(LUGP) SIG(LUG)
SIG(LUG) DISP
DISP LUG
sino escribir(NO ENCONTRADO O NO
EXISTE)
fin_si
fin_si
fin_si
24
Listas circulares con cabecera
Una lista enlazada con cabecera es una lista que contiene al comienzo de la
misma un nodo llamado cabecera.
Hay 2 listas:
Es la ms utilizada
Ventajas
2.6- rboles.
Introduccin
El inconveniente de las estructuras de datos dinmicas lineales es que cada
elemento slo tiene un elemento siguiente, es decir, slo puedo moverme
una posicin.
25
Los rboles representan estructuras no lineales y dinmicas.
RBOLES
Un rbol se define como un conjunto finito de elementos llamados nodos
Un conjunto finito de
que guardan entre ellos una relacin jerrquica.
elementos, con un nodo
especial llamado RAZ y Existe un nodo diferenciado llamado raz del rbol, y los dems nodos
nodos inferiores forman conjuntos diferentes cada uno de los cuales es a su vez un rbol, a
llamados HIJOS estos rboles se los denomin subrboles.
Del nodo raz van a salir las ramas que van conectando las ramas inferiores.
rboles genealgicos
Frmulas matemticas
NODO: Es cada uno de los elementos del rbol (A, B, C, D1, D2, F, G y H).
RAZ: Es un nodo especial del que descienden todos los dems nodos. Este
nodo es el nico que no tiene "padre" (nodo A).
26
PADRE: Todo nodo excepto la raz, tiene asociado un NICO nodo
predecesor al que llamaremos padre.
HERMANO: Son los nodos que son hijos de un mismo padre (D1 y D2).
rbol binario
Se define como un conjunto finito de nodos de forma que contiene un
nodo diferenciado llamado raz y donde cada nodo puede tener 0, 1 2
subrboles a los que se llamar hijo derecho e izquierdo.
27
rboles binarios equivalentes o copias
Si son similares y tienen los mismos contenidos en sus nodos, es decir, son
exactamente iguales.
Un rbol binario lleno es aquel en el que todos los niveles estn completos.
La altura de un rbol binario lleno de N elementos es
h=Log 2 (N + 1) .. N=2 n 1
28
Representacin de rboles binarios en
memoria
Dado un rbol binario hay 2 formas de representarlo:
- IZQ; campo enlace o puntero al hijo izquierdo del nodo, si dicho hijo no
existe, contiene NIL.
Para las inserciones y borrados utilizaremos la lista DISP, va a ser una lista
enlazada normal en la que cada nodo tendr los 3 campos siendo el IZQ el
campo enlace.
ABCXDE
Representacin secuencial
Con 3 arrays: INFO, DER y IZQ y una variable puntero RAIZ.
29
Cada nodo vendr representado por una posicin K tal que la posicin K de
INFO, INFO[K], contiene la informacin de K.
IZQ[K] --> contiene la posicin del array donde est almacenado el hijo
izquierdo de K.
DER[K] --> contiene la posicin del array en la que est almacenado el hijo
derecho de K.
Para las inserciones y borrados utilizaremos la lista DISP que enlazar las
posiciones del array. La variable puntero DISP apuntar a la primera
posiciones libre del array y el resto de las posiciones se enlazarn entre s
mediante el campo IZQ.
Con 1 array: sea T un rbol binario lleno a casi lleno, para este tipo de rbol
lo ms eficiente es utilizar un nico array para almacenarlo siguiendo las
siguientes normas:
Para cada nodo N que ocupe la posicin K del rbol, su hijo izquierdo se
encuentra almacenado en la posicin (2 * K) y su hijo derecho en la
posicin (2 * k + 1).
30
Recorrido de rboles binarios
Recorrido de un rbol es el proceso que consiste en acceder una sola vez a
cada nodo del rbol; hay 3 maneras estndar de recorrer un rbol y en las
tres se dan los mismos pasos y tambin coinciden en que se recorre
primero su rbol izquierdo y luego el derecho.
2 subrbol izquierdo.
3 subrbol derecho.
2 se procesa la raz.
3 subrbol derecho.
2 subrbol derecho.
3 se procesa la raz.
Por cada nodo procesado se examina si tiene hijo derecho y en caso de que
exista nos posicionamos en l y repetimos el proceso anterior.
31
ALGORITMO 57
Algoritmo RECORRIDO_INORDEN
inicio
CIMA 1
PILA(CIMA) NIL
PTR RAIZ
Mientras ( PTR<>NIL)
CIMA CIMA + 1
PILA(CIMA) PTR
PTR IZQ(PTR)
fin_mientras
PTR PILA(CIMA)
CIMA CIMA - 1
mientras (PTR<>NIL)
{PROCESO INFO(PTR)}
SI (DER(PTR)<>NIL)
entonces PTR DER(PTR)
mientras (PTR<>NIL)
CIMA CIMA + 1
PILA(CIMA) PTR
PTR IZQ(PTR)
fin_mientras
fin_si
PTR PILA(CIMA)
CIMA CIMA - 1
fin_mientras
fin
32
El campo clave de n es mayor que cualquiera de los campos clave
de los nodos del subrbol izquierdo de n y de la misma manera el
campo clave de n es menor el campo clave de todos los nodos que se
encuentran en el subrbol derecho de n.
Esto supone que si hago un recorrido inorden del rbol obtendremos sus
elementos ordenados por el campo clave en orden ascendente.
Ejemplo:
Bsqueda de un elemento
El algoritmo localiza la posicin PTR del nodo que contiene el valor del
elemento y en PAD dejamos la localizacin del nodo padre de PTR, la
filosofa del algoritmo consiste en comenzar comparando el elemento con
la raz del rbol y luego ir recorriendo dicho rbol por la derecha o por la
izquierda segn si el elemento es mayor o menor que el nodo que estamos
examinando y as hasta encontrar el elemento o llegar a una hoja del rbol.
ALGORITMO 58
Algoritmo BUSQUEDA
inicio
PTR RAIZ
PAD NIL
mientras ((PTR<>NIL) y (INFO(PTR)<>ELEMENTO))
SI (ELEMENTO < INFO(PTR))
33
entonces PAD PTR
PTR IZQ(PTR)
sino PAD PTR
PTR DER(PTR)
fin_si
fin_mientras
SI (INFO(PTR)=ELEMENTO)
entonces escribir(ENCONTRADO)
fin_si
fin
Insercin de un elemento
Los pasos son:
ALGORITMO 59
Algoritmo INSERCION
inicio
Si (DISP = NIL)
entonces 'OVERFLOW'
sino {llamar algoritmo de bsqueda}
si (INFO(PTR)=ELEMENTO)
entonces escribir(YA EXISTE)
sino NUEVO DISP
DISP IZQ(DISP)
INFO(NUEVO) ELEMENTO
IZQ(NUEVO) NIL
DER(NUEVO) NIL
SI (PAD=NIL)
entonces RAIZ NUEVO
sino SI (ELEMENTO< INFO(PAD))
entonces IZQ(PAD) NUEVO
34
sino DER(PAD) NUEVO
fin_si
fin_si
fin_si
fin_si
fin
Eliminacin de un elemento
Dado un rbol binario de bsqueda del que se quiere eliminar un nodo con
la informacin elemento lo primero que hay que hacer es controlar la
situacin de UNDERFLOW, despus buscar el nodo y una vez encontrado el
nodo se pueden dar 3 casos:
ALGORITMO 60
SI ((IZQ(PTR)=NIL) y (DER(PTR)=NIL))
entonces HIJO NIL
sino SI (IZQ(PTR)<>NIL)
entonces HIJO IZQ[PTR]
sino HIJO DER(PTR)
fin_si
fin_si
SI ( PAD=NIL)
entonces RAIZ HIJO
sino SI (PTR=IZQ(PAD))
entonces IZQ(PAD) HIJO
sino DER(PAD) HIJO
fin_si
fin_si
* Cuando el nodo a borrar tiene 2 hijos
ALGORITMO 61
35
SUC DER(PTR)
mientras (IZQ(SUC)<>NIL) hacer
PADSUC SUC
SUC IZQ(SUC)
fin_mientras
HIJO DER(SUC)
SI (SUC=IZQ(PADSUC))
entonces IZQ(PADSUC) HIJO
sino DER(PADSUC) HIJO
fin_si
SI (PAD=NIL)
Entonces RAIZ SUC
sino SI (PTR=IZQ(PAD))
entonces IZQ(PAD) SUC
sino DER(PAD) SUC
fin_si
fin_si
IZQ(SUC) IZQ(PTR)
DER(SUC) DER(PTR)
fin_si
* Algoritmo general de borrado
ALGORITMO 62
SI (RAIZ=NIL)
entonces 'UNDERFLOW'
sino {llamar algoritmo de bsqueda NODO_ELEM}
SI (INFO<>ELEMENTO)
entonces escribir(No existe el nodo a borrar)
sino SI (IZQ(PTR)<>NIL y DER(PTR)<>NIL)
entonces {borrado 2 hijos}
sino {borrado 0 1 hijo}
fin_si
IZQ(PTR) DISP
DISP PTR
fin_si
fin_si
36
artificial y en general en la mayora de las aplicaciones en que se necesita
hacer bsquedas.
Para equilibrar 0 + a ( b + c * d)
Cada una de estas entradas tiene asociada una clave nica, y por lo tanto,
diferentes entradas de una misma tabla tendrn diferentes claves.
Esto implica, que una clave identifica unvocamente a una entrada en una
tabla hash. Por otro lado, las entradas de las tablas hash estn compuestas
por dos componentes:
La propia clave
37
La estructura de las tablas hash es lo que les confiere su gran potencial, ya
que hace de ellas unas estructuras extremadamente eficientes a la hora de
recuperar informacin almacenada.
Una tabla hash est formada por un array de entradas, que ser la
estructura que almacene la informacin, y por una funcin de dispersin.
La funcin de dispersin permite asociar el elemento almacenado en una
entrada con la clave de dicha entrada. Por lo tanto, es un algoritmo crtico
para el buen funcionamiento de la estructura.
38
Operaciones bsicas de las tablas
hash
Insertar
El proceso de insercin en una tabla hash es muy simple y sencillo. Sobre el
elemento que se desea insertar se aplica la funcin de dispersin. El valor
obtenido tras la aplicacin de esta funcin ser el ndice de la tabla en el
que se insertar el nuevo elemento.
39
Encadenamiento separado: El nuevo elemento se aadir al final de
la lista que se inicia en la posicin indicada por el valor que retorn la
funcin de dispersin.
Borrar
El borrado en una tabla hash es muy sencillo y se realiza de forma muy
eficiente.
Otras operaciones
Una de las principales operaciones que se pueden realizar en las tablas
hash es la redispersin. La redispersin se suele realizar cuando el factor de
carga (nmero de elementos / capacidad de la tabla) de la tabla supera
cierto umbral.
40
La redispersin consiste en pasar todos los elementos de la tabla original a
una nueva tabla de un tamao mayor. De esta forma, se reduce el factor de
carga de la tabla.
2.9- Colas de
prioridad
Veremos en detalle esta aplicacin de la estructura de datos ya vista, Colas:
Para solucionar esto, a cada proceso se le asigna una prioridad tal que se
ejecutarn primero los de prioridad ms alta. Inclusive se puede manejar la
cantidad de procesos permitidos por prioridad e inclusive asociar otras
variantes a la prioridad, ejemplo tiempo de espero mximo permitido,
tiempo de ejecucin permitido, uso de memoria, etc.
- Un campo INFO
41
En el procesado, un nodo X preceder a un nodo Y si X tiene mayor
prioridad que Y o si X, teniendo la misma prioridad que Y, lleg antes que Y.
insert(CPD,x)
x=maxRemove(CPD)
42
localidad vaca o no lo es. Por otro lado, cuando se remueven
elementos, se van creando lugares vacos y despus es necesario
hacer una compactacin, reubicando los elementos en el frente de
la cola.
Resumen
En esta unidad hemos visto ESTRUCTURAS DE DATOS y los conceptos de:
Pila, como una lista lineal de elementos en la cual cada elemento slo
puede ser insertado o eliminado por un extremo denominado CIMA.
43
Bibliografa Bsica
Weiss, M.A. (2000). Estructura de Datos en Java. Adisson Weasley.
Bibliografa Ampliatoria
Lage Fernando. (ao de edicin) Fundamentos de algoritmo y programacin.
Nueva Librera.
www.uesiglo21.edu.ar
44