You are on page 1of 17

Pilas es una coleccin ordenada de elementos en la que pueden insertarse y suprimirse por un extremo, llamado tope, nuevos elementos.

Se representan: F E D C B A

A diferencia del arreglo, la definicion de pila incorpora insercin y la supresin de elementos, de tal manera que esta es un objeto dinmico constantemente variable.

como cambia una pila? La definicion especifica que un extremo de la pila se designa como el tope de la misma. Pueden agregarse nuevos elementos al tope de la pila (en cuyo caso este se mueve hacia arriba para correponder al nuevo elemento que ocupa la cima), o pueden quitarse los elementos que estan en el tope (y entonces el tope se mueve hacia abajo para corresponder al nuevo elemento que se encuentra hasta arriba). Cul camino es hacia arriba? Se define a uno de los extremos de la pila como tope, es decir, en que extremo pueden colocarse o suprimirse elementos

F E D C B A

G F E D C B A

H G F E D C B A

I H G F E D C B

H G F E D C B

G F E D C B

F E D C B

ATRIBUTO MAS IMPORTANTE DE LA PILA El ultimo elemento insertado en una pila es el primero en eliminarse. LIFO last in, first out (ultimo en entrar primero en salir) Si se necesita un control de los elementos intermedios que han estado en la pila, este debe conservarse en alguna parte, pues no se garantiza en la pila misma

Operaciones primitivas Cuando se aade a una pila un elemento, decimos que se agrego (push) en la pila Cuando se suprime, decimos que se quito (pop) de la pila. Ejemplo: i = pop(s); elimina el elemento en el tope de s y asigna su valor i push(s, H); agregando al tope de s el valor de H

Se debe determinar si una pila esta vacia antes de hacer la funcion pop, por lo que: empty(s) determina si una pila s esta o no vacia. Si lo esta regresa el valor TRUE, de lo contrario regresa el valor FALSE Para determinar el valor de un tope de la fila sin eliminarlo se usa la operacin stacktop(s) y regresa como resultado el elemento tope s de la pila. es equivalente a i= pop(s); push(s,i);
Accion push (A) push (B) push (C) pop () push (F) pop () pop () pop () Contenido de la pila A BA CBA BA FBA BA A VACIA

COLAS es una coleccin ordenada de elementos de la que se pueden borrar elementos en un extremo (llamado el frente de la cola) o insertarlos en el otro (llamado final de la cola) El primer elemento insertado en una cola es el primero en ser eliminado. razn por la que las colas son denominadas como listas FIFO (first in, first out) primero en entrar, primero en salir Operaciones: insert (q,x) inserta un elemento en el final de la cola q

x= remove(q) borra un elemento del frente de la cola q y asigna su valor a x empty(q) dara como resultado false o true si la cola tiene o no elementos

calmac() coloca un elemento en el final de la cola crecup() elimina el primer elemento de la cola y devuelve su valor

Accion calmac(A) calmac(B) calmac(C) crecup() calmac(D) crecup() crecup()

Contenido de la cola A AB ABC BC BCD CD D

COLA CIRCULAR permite que la cola no sea destruida cuando alcanza el limite del array utilizado para almacenar la cola, siempre que los elementos vayan siendo recuperados, es decir, los indices volveran al principio

spos Cola al principio rpos spos calmac (A) A rpos calmac (B) A B rpos spos crecup() B rpos crecup() rpos rpos calmac (C) c rpos spos spos spos spos
spos guarda el ndice de la siguiente posicin de almacenamiento libre rpos guarda el ndice del siguiente elemento a recuperar

Las colas y pilas comparten dos rasgos comunes: ambas siguen reglas estrictas para referenciar los datos que almacenan y las operaciones de recuperacion son, por naturaleza destructiva. En otras palabras acceder a un elemento de una pila o de una cola requiere sacarlo y, a menos que se guarde en otro sitio, destruirlo. Las pilas y colas usan una zona contigua de memoria. LISTAS puede ser accedida de forma aleatoria ya que cada pieza de informacion lleva asociada un enlace al siguiente elemento de datos de la secuencia. Una operacin de recuperacion en una lista enlazada no elimina ni destruye el elemento de la lista. De hecho para hacer eso, hay que aadir una operacin especifica de eliminacion.

LISTA ENLAZADA contiene un enlace al siguiente elemento. LISTA DOBLEMENTE ENLAZADA como al elemento anterior de la lista contiene enlaces tanto al siguiente elemento

Listas simplemente enlazadas necesita que cada elemento de informacion contenga un enlace al siguiente elemento de la lista. Cada elemento generalmente consiste en una estructura que contiene campos de informacion y un puntero de enlace. Formas de construir una lista: 1.= aade cada nuevo elemento al final de la lista 2.= aade los elementos en lugares especificos de la lista, por ejemplo en orden ascendente la manera en que se construya la lista determina la forma en que ha de ser codificada la funcion de almacenamiento

Funcion lalmac() construye una lista simplemente enlazada colocando cada nuevo elemento al final. Se necesita un puntero a una estructura y un puntero al ultimo elemento de la lista. Si la lista esta vacia, el puntero al ultimo elemento sera nulo.

estruct direct { char nombre [40]; char calle [40]; char ciudad [20]; char estado [20]; char codigo [6]; struct direct *sig; //enlace en la siguiente direccion }info; void lalmac (struct direc *i, struct direc **ultimo) {if(!*ultimo)*ultimo=i; //primer elemento en la lista else (*ultimo) sig=i; i sig = NULL; *ultimo =i; }

La funcion linsert(), inserta estructuras direc en la lista de correos en orden ascendente de acuerdo con el campo nombre. A la funcion se le debe pasar un puntero al puntero al primer elemento y al ultimo elemento de la lista, junto con un puntero a la informacion a ser guardada. Como puede cambiar el primer o el ultimo elemento de la lista, linsert() actualiza automaticamente los punteros al principio y al final de la lista, si cambian. Si es por primera vez, deben apuntar a NULL. Nuevo primer elemento info nuevo info info 0
Se convierte en

nuevo info info info 0

Nuevo elemento intermedio info

nuevo info info 0


Se convierte en

nuevo info info info 0

Nuevo elemento final info

nuevo info info 0

Se convierte en

nuevo info info info 0

leliminar() punteros a elementos a eliminar, al elemento anterior en la secuencia y al principio y al final de la lista. Si el elemento que se va a eliminar es el primero, el puntero anterior debe ser nulo. Eliminacion del primer puntero info info info 0
Se convierte en

eliminado

info

info 0

Eliminacin de un elemento intermedio Se info info info convierte en 0

info

eliminado 0

info 0

Eliminacion del ultimo elemento info info info 0


Se convierte en

info

info 0

eliminado 0

Listas doblemente enlazadas consisten en datos mas un enlace al elemento siguiente y otro enlace al elemento anterior. Disponer de dos enlaces en lugar de solo uno tiene varias ventajas. La mas importante es que la lista se puede recorrer en cualquier direccion esto simplifica la gestion de la lista, facilitando las insercjones y las eliminaciones. Permite que el usuario explore la lista en cualquier direccion.

estruct direct { char nombre [40]; char calle [40]; char ciudad [20]; char estado [20]; char codigo [6]; struct direct *sig; //enlace en la siguiente direccion struct direct *ant; }info; void dlalmac (struct direc *i, struct direc **ultimo) {if(!*ultimo)*ultimo=i; //primer elemento en la lista else (*ultimo) sig=i; i sig = NULL; i ant = *ultimo; *ultimo =i; }

Nuevo primer elemento info 0

nuevo info info 0


Se convierte en

nuevo 0 info info info 0

Nuevo elemento intermedio info 0

nuevo info info 0


Se convierte en

nuevo info 0 info info 0

Nuevo elemento final info 0

nuevo info info 0


Se convierte en

nuevo 0 info 0 info info

Eliminacin del primer elemento info 0 Eliminacin del elemento intermedio info 0

info

info 0

Se convierte en

eliminado info 0 0 0

info 0

info

info 0

Se convierte en

info 0

eliminado 0 0

info 0

Eliminacin del elemento final info 0 info info 0


Se convierte en

info 0

info 0

eliminado 0 0

You might also like