Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ITSP
Meter (push)
Pagina 25
Estructura de Datos
Sacar (pop)
ITSP
Recupera y elimina el ltimo elemento en la
cima de la pila.
Pagina 26
Estructura de Datos
ITSP
Pagina 27
Estructura de Datos
ITSP
Pagina 28
Estructura de Datos
ITSP
Clase USOPILAS.
Leer 5 valores e insertarlos a una pila, retornar el total de elementos y los
datos sin sacarlos y visualizarlos en pantalla.
import java.io.*;
import java.awt.*;
public class UsoPilas {
public static void main(String[] args) throws IOException {
Pagina 29
Estructura de Datos
ITSP
Pila p;
BufferedReader c;
int x,y, tot;
int A[];
String linea;
c = new BufferedReader (new InputStreamReader(System.in));
p = new Pila(10);
for (i = 1; i <= 5; i++)
{
linea = c.readLine();
x= Integer.parseInt(linea);
p.Push(x);
}
tot = p.RetornaCima();
A= p.RetornaPila();
Pagina 30
Estructura de Datos
ITSP
Ejercicios de Pilas.
1) Crear una pila de 10 elementos, que saque cada uno de los elementos
y lo despliegue en pantalla. Ejemplo
Entrada
1, 2, 3, 4,5
Salida
5, 4, 3, 2,1
Pagina 31
Estructura de Datos
ITSP
Pila 1: 8, 4, 5,0
Pila 2: 3, 7,0
5
4
8
Pila 1
7
3
Pila 2
3
7
8
4
5
Pila 3
3.2 COLA.
Pagina 32
Estructura de Datos
ITSP
almacenar
datos
del
mismo
tipo.
Las
colas
pueden
ser
Pagina 33
Estructura de Datos
ITSP
Crearcola(Q)
Colavacia(Q)
Colallena(Q)
Insertar(Q,X)
Borrar(Q,X)
Elementoscola(Q)
Pagina 34
Estructura de Datos
ITSP
Pagina 35
Estructura de Datos
ITSP
Para utilizar una cola se utiliza una clase con los siguientes atributos:
Frente
Final o atrs
Colas circulares.
Supongamos un vector para representar a una cola. Se realizan las
siguientes inserciones:
Insertar (30);
Insertar (75);
Insertar (55);
La cola seria:
Atrs=3
30
75
55
Frente=0
Se eliminara el 30
Eliminar
Se eliminara el 75
Atrs=3
Pagina 36
Estructura de Datos
ITSP
55
Frente=0
55
80
65
Frente=0
Mas sin embargo como se puede apreciar en la figura anterior, el vector esta
vaci al principio, por lo que la solucin seria una cola circular.
El vector circular se puede realizar fijando el ndice del arreglo en 0 e
incrementando frente y atrs.
Pagina 37
Estructura de Datos
Insertar 50
Insertar 40
Insertar 30
ITSP
Frente
0
50
40
Atras
30
2
Pagina 38
Estructura de Datos
ITSP
Eliminar
Eliminar
Frente
Atras
30
2
Pagina 39
Estructura de Datos
ITSP
Atras
Insertar 75
Insertar 55
4
55
1
75
30
2
Frente
Determinar cola vaca o cola llena
Para determinar si la cola esta vaca se tiene que verificar la condicin
frente=atrs. Inicialmente, CrearCola fijara frente y atrs, ambas a cero.
Si la cola tiene un solo elemento, debe estar en la posicin frente y atrs es
la posicin libre siguiente a ella. Si este elemento se suprime, frente se
incrementa en 1, de modo que frente y atrs tienen el mismo valor cuando la
cola esta vaca.
Pagina 40
Estructura de Datos
ITSP
Atras
Frente
Cola Vaca
1
Atras
Frente
50
55
Cola LLena
60
22
34
2
Nodo de Sacrificio.
Si un elemento se almacena en esa posicin, atrs se incrementa en 1 y por
consiguiente tendr el mismo valor que frente. Sin embargo, la condicin
frente=final indica que la cola esta vaca. Por tanto, no podremos diferenciar
entre una cola vaca y una cola llena, si esta posicin se utiliza para
almacenar un elemento. Se puede evitar esta dificultad, si se mantiene una
posicin vaca (libre) en el arreglo; la condicin que indica si una cola esta
llena es entonces:
Pagina 41
Estructura de Datos
ITSP
Pagina 42
Estructura de Datos
ITSP
this.frente = 0;
this.atras = 0;
}
// Mtodo que inserta elementos.
public void Insertar(int valor)
{
DATOS[atras]=valor;
atras = (atras + 1 ) % TOTAL;
}
// Mtodo que elimina elementos de la cola.
public int Eliminar()
{
int aux;
aux = DATOS[frente];
frente = (frente + 1 ) % TOTAL;
return aux;
}
// Mtodo que verifica si la cola esta vaca.
public boolean Vacio()
{
if (frente == atras)
return true;
else
return false;
}
// Mtodo que verifica si la cola esta llena
public boolean Lleno()
{
int sig;
sig = (atras + 1 ) % TOTAL;
if (sig == frente)
Pagina 43
Estructura de Datos
ITSP
return true;
else
return false;
}
// Mtodo que retorna el arreglo de los datos
public int [] RetornaCola()
{
return DATOS;
}
}
Clase USOCOLA.
Leer 5 valores e insertarlos a una cola, sacar cada elemento de la misma
hasta que la cola se quede vaci y visualizarlos en pantalla.
import java.io.*;
import java.awt.*;
public class UsoColas {
public static void main(String[] args) throws IOException {
Cola cola;
BufferedReader c;
int i, x,y, tot;
String linea;
c = new BufferedReader (new InputStreamReader(System.in));
cola = new Cola(10);
for (i = 1; i <= 5; i++)
{
Pagina 44
Estructura de Datos
ITSP
linea = c.readLine();
x= Integer.parseInt(linea);
cola.Insertar(x);
}
while (!cola.Vacio())
{
y = cola.Eliminar();
System.out.println(y);
}
}
}
Pagina 45
Estructura de Datos
ITSP
Ejercicios de Colas.
1. Generar una cola de 10 enteros. Sacar cada elemento de la cola y
visualizarlo en pantalla capturando los siguientes elementos:
a) Suma de elementos insertados
b) Promedio de los elementos
c) Numero de elementos pares
d) Numero de elementos mltiplos de 4
Visualizar el resultado de los clculos anteriores
2. Generar una cola con los primeros 15 nmeros primos. Sacar cada
elemento de la cola y visualizarlo en pantalla.
3. Declarar una cola de mximo 10 elementos. Leer un nmero e insertar a
la cola los nmeros que sean divisores del nmero capturado. El total de
nmeros insertados depender de que la cola se llene o que la cantidad de
nmeros divisores sean pocos. Sacar y visualizar los elementos de la cola.
4. Hacer un programa que lea 2 colas de 10 elementos y que declare otra
cola de 20 y que realice la mezcla de ambas colas. Visualizar la tercera cola
sin sacar los elementos.
Pagina 46
Estructura de Datos
ITSP
null
Pagina 47
Estructura de Datos
ITSP
Las variables que identifica a la lista solo conoce el primer nodo. Para
acceder al resto de los nodos se hace a travs del apuntador de cada
nodo.
Pagina 48
Estructura de Datos
ITSP
Pagina 49
Estructura de Datos
ITSP
Pagina 50
Estructura de Datos
ITSP
Clase PILADINAMICA.
public class PilaDinamica {
NodoPila p;
public PilaDinamica()
{
p = null;
}
public void Push(int valor)
{
NodoPila nuevo;
nuevo = new NodoPila (valor, p);
p = nuevo;
}
public int Pop()
{
int valor;
valor = p.ObtenerInfo();
p = p.ObtenerApuntador();
return valor;
}
public boolean Empty()
{
if (p == null)
return true;
Pagina 51
Estructura de Datos
ITSP
else
return false;
}
}
Clase USOPILADINAMICA.
//Leer elementos enteros e insertarlos a una pila, hasta que se capture -1.
//Sacar cada elemento y visualizarlo en pantalla.
import java.io.*;
public class UsoPilaDinamica {
public static void main(String[] args) throws IOException {
int num;
String linea;
BufferedReader t;
PilaDinamica pila;
t = new BufferedReader (new InputStreamReader(System.in));
pila = new PilaDinamica();
System.out.println("Captura nmeros y finaliza con -1");
linea = t.readLine();
num = Integer.parseInt(linea);
while (num!= -1)
{
pila.Push(num);
Pagina 52
Estructura de Datos
ITSP
linea = t.readLine();
num = Integer.parseInt(linea);
}
System.out.println("Visualizacin de elementos");
while (!pila.Empty())
{
System.out.print("Elemento ");
num = pila.Pop();
System.out.println(num);
}
}
Pagina 53
Estructura de Datos
ITSP
}
Clase COLADINAMICA.
public class ColaDinamica {
NodoCola c;
public ColaDinamica()
{
c = null;
}
public void Insertar(int valor)
{
NodoCola nuevo, aux;
if (c == null)
{
nuevo = new NodoCola (valor);
this = nuevo;
Pagina 54
Estructura de Datos
ITSP
}
else
{
aux = c;
while(aux.ObtenerApuntador()!=null)
aux = aux.ObtenerApuntador();
nuevo = new NodoCola (valor);
aux.apuntador = nuevo;
}
}
public int Borrar()
{
int valor;
valor = c.ObtenerInfo();
c = c.ObtenerApuntador();
return valor;
}
public boolean Vacio()
{
if (c == null)
return true;
else
return false;
}
Pagina 55
Estructura de Datos
ITSP
Clase USOCOLADINAMICA
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
Estructura de Datos
ITSP
}
aux = cola.c;
System.out.println("Visualizacin de elementos");
while (!cola.Vacio())
{
System.out.print("Elemento ");
num = cola.Borrar();
System.out.println(num);
}
System.out.println("Visualizacin de elementos");
while (aux!= null)
{
System.out.print("Elemento ");
num = aux.info;
System.out.println(num);
aux = aux.ObtenerApuntador();
}
}
}
Pagina 57
Estructura de Datos
ITSP
Ejercicios de Listas.
1. Se desea almacenar las edades de personas en una estructura de
datos. Sacar cada elemento y mostrar en pantalla solamente los
mayores de edad. Mayor de edad arriba de 18 anos.
2. Almacenar en una estructura de datos, los sueldos de los trabajadores
de una empresa. Sacarlos y obtener los siguientes resultados:
a. Sumar los sueldos base.
b. A cada sueldo se le da 1% de prestaciones. Realizar la suma de
las prestaciones.
c. A cada sueldo se le aplica el 1.5% de deducciones. Realizar la
suma de las deducciones.
3. Se desea almacenar el nombre de alumnos en una estructura de
datos. Sacar cada elemento y visualizar en pantalla solamente los que
inician con M.
4. Almacenar nmeros divisores del 1000 en una estructura de datos.
5. Almacenar nmeros en una estructura de datos. Sacar cada nmero,
visualizarlo en pantalla, as como el factorial de ese numero.
Pagina 58