Está en la página 1de 37

COLA

ESTRUCTURA DE DATOS

AVO 2021
OPERACIONES

 Push (insertar un nodo en la Cola)


 Pop (eliminar un nodo de la Cola)

AVO 2021
COMPORTAMIENTO: FIFO
First In First Out
El primer nodo que entra es el primero en salir

 Sólo 1 nodo puede insertarse a la vez.

 Sólo 1 nodo puede sacarse a la vez.

 Sólo un nodo detrás de otro.

 Se inserta detrás del ultimo nodo de la Cola.

 Se elimina al primer nodo de la Cola.

AVO 2021
COLA VACÍA
Una Cola sin nodos es llamada una Cola vacía.

El primero de la Cola no es ningún nodo.

El último de la Cola no es ningún nodo.

ultimo NULL primero

AVO 2021
PUSH
En una cola vacía, el nodo insertado será
tanto el primero como el último de la Cola.

new Nodo(d, NULL)

5 ultimo NULL primero


NULL

AVO 2021
COLA CON 1 NODO
Cada nodo conoce sólo el nodo detrás de él.

Sólo el último nodo en la Cola no tiene ningún


nodo detrás de él.

La operación sería:

primero = new Nodo(d, NULL); ultimo primero


ultimo = primero;
5
NULL

AVO 2021
PUSH
Insertar un nodo en una Cola que ya tiene nodos, se
realiza detrás del último nodo en la Cola.

El nodo insertado será ahora el último nodo en la Cola.

new Nodo(d, NULL);

ultimo primero
3 5
NULL NULL

AVO 2021
PUSH
El último nodo debe apuntar al nuevo:

ultimo ->modificaTuDetras(new Nodo(d, NULL));

ultimo primero
3 5
NULL

AVO 2021
COLA CON 2 NODOS
El nuevo deber ser ahora el último:
ultimo = ultimo -> retornaTuDetras();

La operación completa sería:

ultimo ->modificaTuDetras(new Nodo(d, NULL));


ultimo = ultimo -> retornaTuDetras();
ultimo primero
3 5
NULL

AVO 2021
PUSH
Insertar un nodo en una Cola que ya tiene nodos, se
realiza detrás del último nodo en la Cola.

El nodo insertado será ahora el último nodo en la Cola.

new Nodo(d, NULL)

ultimo primero
7 3 5
NULL NULL

AVO 2021
PUSH
El último nodo debe apuntar al nuevo:

ultimo ->modificaTuDetras(new Nodo(d, NULL));

ultimo primero
7 3 5
NULL

AVO 2021
COLA CON 3 NODOS
El nuevo deber ser ahora el último:
ultimo = ultimo -> retornaTuDetras();

La operación completa sería:

ultimo ->modificaTuDetras(new Nodo(d, NULL));


ultimo = ultimo -> retornaTuDetras();
ultimo primero
7 3 5
NULL

AVO 2021
PUSH
Insertar un nodo en una Cola que ya tiene nodos, se
realiza detrás del último nodo en la Cola.

El nodo insertado será ahora el último nodo en la Cola.

new Nodo(d, NULL);

ultimo primero
-4 7 3 5
NULL NULL

AVO 2021
PUSH
El último nodo debe apuntar al nuevo:

ultimo ->modificaTuDetras(new Nodo(d, NULL));

ultimo primero
-4 7 3 5
NULL

AVO 2021
COLA CON 4 NODOS
El nuevo deber ser ahora el último:
ultimo = ultimo -> retornaTuDetras();

La operación completa sería:

ultimo ->modificaTuDetras(new Nodo(d, NULL));


ultimo = ultimo -> retornaTuDetras();

ultimo primero
-4 7 3 5
NULL

AVO 2021
POP
Si la Cola NO está vacía, el primer nodo en la Cola será el único que pueda sacarse.

El nodo detrás de él será el nuevo primero de la Cola.

ultimo primero
-4 7 3 5
NULL

AVO 2021
POP
Se guardan copias tanto del dato dentro del primer nodo como de su dirección:

aux =primero;
d = primero -> retornaTuDato();

ultimo primero
-4 7 3 5
NULL aux

5 d

AVO 2021
POP
El nodo detrás del actual primero será el nuevo primero, y se elimina el viejo primero:

primero = primero -> retornaTuDetras();


delete aux;

ultimo primero
-4 7 3
NULL 5
aux

5 d

AVO 2021
COLA CON 3 NODOS
La operación completa es:

aux =primero;
d = primero -> retornaTuDato();
primero = primero -> retornaTuDetras();
delete aux;

ultimo primero
-4 7 3
NULL

5 d

AVO 2021
POP
Si la Cola NO está vacía, el primer nodo en la Cola será el único que pueda sacarse.

El nodo detrás de él será el nuevo primero de la Cola.

ultimo primero
-4 7 3
NULL

AVO 2021
POP
Se guardan copias tanto del dato dentro del primer nodo como de su dirección:

aux =primero;
d = primero -> retornaTuDato();

ultimo primero
-4 7 3
NULL aux

3 d

AVO 2021
POP
El nodo detrás del actual primero será el nuevo primero, y se elimina el viejo primero:

primero = primero -> retornaTuDetras();


delete aux;

ultimo primero
-4 7
3
NULL aux

3 d

AVO 2021
POP
La operación completa es:

aux =primero;
d = primero -> retornaTuDato();
primero = primero -> retornaTuDetras();
delete aux;

ultimo primero
-4 7
NULL

3 d

AVO 2021
PUSH
Insertar un nodo en una Cola que ya tiene nodos, se
realiza detrás del último nodo en la Cola.

El nodo insertado será ahora el último nodo en la Cola.

new Nodo(d, NULL);

ultimo primero
9 -4 7
NULL NULL

AVO 2021
PUSH
El último nodo debe apuntar al nuevo:

ultimo ->modificaTuDetras(new Nodo(d, NULL));

ultimo primero
9 -4 7
NULL

AVO 2021
COLA CON 3 NODOS
El nuevo deber ser ahora el último:
ultimo = ultimo -> retornaTuDetras();

La operación completa sería:

ultimo ->modificaTuDetras(new Nodo(d, NULL));


ultimo = ultimo -> retornaTuDetras();
ultimo primero
9 -4 7
NULL

AVO 2021
POP
Si la Cola NO está vacía, el primer nodo en la Cola será el único que pueda sacarse.

El nodo detrás de él será el nuevo primero de la Cola.

ultimo primero
9 -4 7
NULL

AVO 2021
POP
Se guardan copias tanto del dato dentro del primer nodo como de su dirección:

aux =primero;
d = primero -> retornaTuDato();

ultimo primero
9 -4 7
NULL aux

7 d

AVO 2021
POP
El nodo detrás del actual primero será el nuevo primero, y se elimina el viejo primero:

primero = primero -> retornaTuDetras();


delete aux;

ultimo primero
9 -4
7
NULL aux

7 d

AVO 2021
POP
La operación completa es:

aux =primero;
d = primero -> retornaTuDato();
primero = primero -> retornaTuDetras();
delete aux;

ultimo primero
9 -4
NULL

7 d

AVO 2021
POP
Si la Cola NO está vacía, el primer nodo en la Cola será el único que pueda sacarse.

El nodo detrás de él será el nuevo primero de la Cola.

ultimo primero
9 -4
NULL

AVO 2021
POP
Se guardan copias tanto del dato dentro del primer nodo como de su dirección:

aux =primero;
d = primero -> retornaTuDato();

ultimo primero
9 -4
NULL aux

-4 d

AVO 2021
POP
El nodo detrás del actual primero será el nuevo primero, y se elimina el viejo primero:

primero = primero -> retornaTuDetras();


delete aux;

ultimo primero
9
-4
NULL aux

-4 d

AVO 2021
POP
La operación completa es:

aux =primero;
d = primero -> retornaTuDato();
primero = primero -> retornaTuDetras();
delete aux;

ultimo primero
9
NULL

-4 d

AVO 2021
POP
Si la Cola NO está vacía, el primer en la Cola será el único que pueda sacarse.

El nodo detrás de él será el nuevo primero de la Cola.

Si sólo hay un nodo en la cola, tras eliminarlo, no habrá ningún nodo que sea el primero;
igualmente, no habrá ningún nodo que sea el último.

ultimo primero
9
NULL

AVO 2021
POP
La operación será:

delete primero;
primero = NULL;
ultimo = NULL;

ultimo primero
9
NULL

AVO 2021
COLA VACÍA
Una Cola sin nodos es llamada una Cola vacía.

El primero de la Cola no es ningún nodo.

El último de la Cola no es ningún nodo.

ultimo NULL primero

AVO 2021

También podría gustarte