Guia Pilas-Colas
Guia Pilas-Colas
Guia Pilas-Colas
import java.util.Scanner;
public class Pila {
private int tope, max;
Object[] v = new Object[100];
Pila(int ca) {
max = ca;
tope = 0;
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
boolean esLlena() {
if (tope == max)
return true;
else
return false;
}
boolean esVacia () {
if (tope == 0)
return true;
else
return false;
}
int nElem() {
return tope;
}
Object eliminar() {
Object item = null;
if (esVacia ())
System.out.println("Pila vacia");
else {
item = v[tope];
tope--;
}
return item;
}
void vaciar(Pila B) {
while (!B. esVacia ())
adicionar(B.eliminar());
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
void mostrar() {
Object item;
Pila aux = new Pila(max);
while (!esVacia())
aux.adicionar(eliminar());
while (!aux.esVacia()) {
item = aux.eliminar();
System.out.println(item);
adicionar(item);
}
}
void llenar(int n) {
int i;
Scanner lee = new Scanner(System.in);
for (i = 1; i <= n; i++) {
Object dato = lee.nextInt();
adicionar(dato);
}
}
}
Implementación:
System.out.println("Pila:");
p.mostrar();
}
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
Ejercicio 1:
Sea una pila de números se pide mostrar a los números pares
Desarrollo lógico:
Se crea la Pila, se adicionan 7 números y se procede a ejecutar el método
“mostrarPares” donde creamos una Pila auxiliar (aux), sacamos uno a uno los
elementos de la Pila original (p) consultando si son números pares o no y
guardando la información en la Pila auxiliar para al final realizar el vaciado
correspondiente.
System.out.println("Pila:");
p.mostrar();
System.out.println("\nPares:");
mostrarPares(p);
}
Ejercicio 2:
Sea una pila de números se pide mostrar cuantas veces se repite el número x
import java.util.Scanner;
Ejercicio 3:
Dada una pila de números enteros positivos se pide eliminar al número mayor si
este es par (puede haber repetidos)
Ejercicio 4:
Dada una cadena x, con ayuda de la estructura pila verificar si es un
palíndromo.
Ejercicio 5:
Sea una pila de nombres se pide llevar al final todas las cadenas que Inician
con una vocal
import java.util.Scanner;
System.out.println("Pila:");
p.mostrar();
System.out.println("\nSolucion:");
llevarFinal(p);
p.mostrar();
}
public static void llevarFinal(Pila p) {
Pila aux = new Pila(30);
Pila auxVocales = new Pila(30);
String elem;
String vocales = "aeiouAEIOU";
while (!p.esVacia()) {
elem = (String) p.eliminar();
if (vocales.contains(elem.charAt(0) + ""))
auxVocales.adicionar(elem);
else
aux.adicionar(elem);
}
p.vaciar(aux);
p.vaciar(auxVocales);
}
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
COLA SIMPLE
Definición:
Una cola es una estructura de datos donde el primer elemento en entrar es el primero
en salir. Una cola es una estructura de datos, caracterizada por ser una secuencia de
elementos en la que la operación de inserción push se realiza por un extremo y la
operación de extracción pop por el otro, también reciben el nombre de estructuras
FIFO (del inglés First Input First Output, primero en entrar, primero en salir).
Elementos:
Código Java
import java.util.Scanner;
public class ColaSimple {
private int ini, fin, max;
private Object v[] = new Object[100];
ColaSimple(int tam) {
ini = 0;
fin = 0;
max = tam;
}
boolean esVacia() {
if (ini == 0)
return true;
else
return false;
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
boolean esLlena() {
if (fin == max)
return true;
return false;
}
void adicionar(Object x) {
if (!esLlena()) {
if (esVacia())
ini = 1;
fin++;
v[fin] = x;
} else
System.out.print("Cola llena");
}
Object eliminar() {
Object x = null;
if (!esVacia()) {
x = v[ini];
ini++;
if (ini > fin) {
ini = 0;
fin = 0;
}
} else
System.out.println("Cola vacia...");
return (x);
}
int nElem() {
if (!esVacia())
return (fin - ini + 1);
else
return (0);
}
int getMax() {
return max;
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
void mostrar() {
ColaSimple aux = new ColaSimple(max);
Object x;
if (!esVacia()) {
while (!esVacia()) {
x = eliminar();
System.out.print(x + "\t");
aux.adicionar(x);
}
vaciar(aux);
} else
System.out.println("Cola vacia...");
}
void vaciar(ColaSimple B) {
while (!B.esVacia())
adicionar(B.eliminar());
}
void llenaEnteros(int n) {
int i;
Scanner lee = new Scanner(System.in);
for (i = 1; i <= n; i++) {
Object dato = lee.nextInt();
adicionar(dato);
}
}
}
public class principal {
public static void main(String[] args) {
ColaSimple c=new ColaSimple(20);
c.adicionar(1);
c.adicionar(2);
c.adicionar(3);
c.adicionar(4);
System.out.println("Datos de la Cola:");
c.mostrar();
}
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
COLA CIRCULAR
Definición:
Una cola circular es una estructura de datos en la que los elementos están
de forma circular. Son estructuras que nos permiten utilizar los espacios de
memoria de manera más eficiente que una cola simple normal.
Elementos:
ColaCircular(int tam) {
ini = 0;
fin = 0;
max = tam;
}
boolean esVacia() {
if (nElem() == 0)
return true;
return false;
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
boolean esLlena() {
if (nElem() == (max - 1))
return true;
else
return false;
}
void adicionar(Object x) {
if (!esLlena()) {
fin = (fin + 1) % max;
v[fin] = x;
} else
System.out.println("Cola llena...");
}
Object eliminar() {
Object x = null;
if (!esVacia()) {
ini = (ini + 1) % max;
x = v[ini];
} else
System.out.println("Cola vacia...");
return x;
}
int nElem() {
return ((fin - ini + max) % max);
}
void mostrar() {
Object x;
int n = nElem();
if (!esVacia()) {
while (n > 0) {
x = eliminar();
n--;
System.out.print(x + "\t");
adicionar(x);
}
} else
System.out.println("Cola vacia...");
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
void vaciar(ColaCircular B) {
while (!B.esVacia())
adicionar(B.eliminar());
}
void llenaEnteros(int n) {
int i;
Scanner lee = new Scanner(System.in);
for (i = 1; i <= n; i++) {
Object dato = lee.nextInt();
adicionar(dato);
}
}
Ejercicio 1:
Dada una cola simple de enteros (1s y 0s) obtener su equivalente en base
decimal.
Ejercicio 2:
Dada una cola simple de enteros eliminar los números múltiplos de 3
package pila;
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
Ejercicio 3:
Dada una cola Circular de enteros eliminar los números pares sin usar
estructuras auxiliares.
}
Estructura de Datos y Algoritmos LAB-131 Gestión II-2022 Aux. Sergio Ramirez Castro
Ejercicio 4:
Dada una cola circular de cadenas duplicar todas las que tengan menos de
5 caracteres sin usar estructuras auxiliares.
Ejercicios propuestos:
1. Dada una pila con 10 números que representan las calificaciones de un
aula se pide redondear a 51 las notas que estén en el rango de 45 y 50.
2. Dada una oración verificar si es un palíndromo. Ejemplo:
3. En una pila que contiene cadenas se pide eliminar aquellas cadenas que
contengan más de 3 vocales
4. Dada una pila de enteros se pide ordenar ascendentemente. Ejemplo:
5. Sea una pila de caracteres, llevar a todas las vocales al principio de la pila y
las consonantes al final de la pila.
6. Dada una pila de números, eliminar a todos los números que se repitan.
7. En una pila ordenada de números Insertar un número en la i-esima
posición
8. Dada una Cola Circular de objetos Película< Titulo, Género, Duración>, se
pide Ordenar según su duración
9. Sea una cola simple de alimentos<nombre, precio> mostrar el(los)
alimentos con mayor precio
10.Sea una cola simple de números mover el k-esimo elemento al principio si
existe
11.Se tienen dos colas que contienen los dígitos, respectivamente. Se pide:
a. Sumar los números
b. Multiplicar los números
12.Dada una cola de que almacena objetos Persona<ci, nombre, apellidoP,
apellidoM, fechaNac(dd/mm/aaaa)>
a. Mostrar las personas que tengan C.I. igual a x.
b. Mostrar a las personas que sean mayores de edad.