Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pilas y Colas
Pilas y Colas
java
package tech.alvarez;
}
Raw
Ficha.java
package tech.alvarez;
Main.java
package tech.alvarez;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
// llenar
System.out.println("ODONTOLOGIA");
mostrar(o);
System.out.println("NEUROLOGIA");
mostrar(n);
System.out.println("PEDIATRIA");
mostrar(p);
pacientes.add(new Paciente("Nombre1",
Constantes.ESPECIALIDAD_ODONTOLOGIA, Constantes.ESPECIALIDAD_PEDIATRIA));
pacientes.add(new Paciente("Nombre2",
Constantes.ESPECIALIDAD_PEDIATRIA, Constantes.SIN_ESPECIALIDAD));
pacientes.add(new Paciente("Nombre3",
Constantes.ESPECIALIDAD_NEUROLOGIA, Constantes.ESPECIALIDAD_ODONTOLOGIA));
pacientes.add(new Paciente("Nombre4",
Constantes.ESPECIALIDAD_ODONTOLOGIA, Constantes.SIN_ESPECIALIDAD));
pacientes.add(new Paciente("Nombre5",
Constantes.ESPECIALIDAD_ODONTOLOGIA, Constantes.SIN_ESPECIALIDAD));
pacientes.add(new Paciente("Nombre6",
Constantes.ESPECIALIDAD_PEDIATRIA, Constantes.SIN_ESPECIALIDAD));
pacientes.add(new Paciente("Nombre7",
Constantes.ESPECIALIDAD_NEUROLOGIA, Constantes.SIN_ESPECIALIDAD));
pacientes.add(new Paciente("Nombre8",
Constantes.ESPECIALIDAD_NEUROLOGIA, Constantes.SIN_ESPECIALIDAD));
pacientes.add(new Paciente("Nombre9",
Constantes.ESPECIALIDAD_NEUROLOGIA, Constantes.SIN_ESPECIALIDAD));
pacientes.add(new Paciente("Nombre10",
Constantes.ESPECIALIDAD_NEUROLOGIA, Constantes.SIN_ESPECIALIDAD));
System.out.println("PACIENTES");
mostrar(pacientes);
// Solución 1
asignarFichas(o, n, p, pacientes);
System.out.println("ODONTOLOGIA");
mostrar(o);
System.out.println("NEUROLOGIA");
mostrar(n);
System.out.println("PEDIATRIA");
mostrar(p);
// Solución 2
// Calcular cual es la especialidad mas requerida
calcularEspecidadMasRequerida(o, n, p);
// Solución 3
// Realizar el metodo atender para devolver la ficha a su lugar
Paciente pa = pacientes.remove();
System.out.println("> paciente: " + pa.getNombre());
atender(pa, o, p, n);
int no = o.size();
int np = p.size();
int nn = n.size();
int m = pacientes.size();
for (int i = 0; i < m; i++) {
Paciente pa = pacientes.remove();
if (pa.getEspecialidad1() ==
Constantes.ESPECIALIDAD_NEUROLOGIA) {
Ficha fi = n.pop();
pa.setFicha1(fi);
} else if (pa.getEspecialidad1() ==
Constantes.ESPECIALIDAD_ODONTOLOGIA) {
Ficha fi = o.pop();
pa.setFicha1(fi);
} else if (pa.getEspecialidad1() ==
Constantes.ESPECIALIDAD_PEDIATRIA) {
Ficha fi = p.pop();
pa.setFicha1(fi);
}
if (pa.getEspecialidad2() != Constantes.SIN_ESPECIALIDAD) {
if (pa.getEspecialidad2() ==
Constantes.ESPECIALIDAD_NEUROLOGIA) {
Ficha fi = n.pop();
pa.setFicha2(fi);
} else if (pa.getEspecialidad2() ==
Constantes.ESPECIALIDAD_ODONTOLOGIA) {
Ficha fi = o.pop();
pa.setFicha2(fi);
} else if (pa.getEspecialidad2() ==
Constantes.ESPECIALIDAD_PEDIATRIA) {
Ficha fi = p.pop();
pa.setFicha2(fi);
}
}
pacientes.add(pa);
}
while (!o.isEmpty()) {
Ficha fi = o.pop();
System.out.println(" Ficha: " + fi.getEspecialidad() + " " +
fi.getCodigo());
temp.push(fi);
}
while (!temp.isEmpty()) {
Ficha fi = temp.pop();
o.push(fi);
}
}
Paciente.java
package tech.alvarez;
1.
2. Ejercicio Pila
En este ejemplo hemos creado la función verificaParentesis que nos devuelve un boolean
indicando si dada una cadena, esta está equilibrada y correcta en paréntesis, es decir verificar
que cada paréntesis que se abre en la cadena tenga su correspondiente cierre. Para ello se
hace uso internamente en este método de una pila o stack. Así el programa principal main
tan solo llama a esta función con una cadena de ejemplo (cadenano o cadenasi) para verificar
su equilibrado y corrección en paréntesis.
package proypilasejemplo;
import java.util.Stack;
/**
* @param args the command line arguments
*/
public static void main(String arg[]) {
String cadenano = "(Cadena no equilibrada en paréntesis(()()()))))";
String cadenasi = "(Cadena equilibrada en parentesis())";
System.out.println("Verificación equilibrado en paréntesis para
cadenano:");
System.out.println(verificaParentesis(cadenano));
System.out.println("Verificación equilibrado en paréntesis para
cadenasi:");
System.out.println(verificaParentesis(cadenasi));
}
public static boolean verificaParentesis(String cadena) {
Stack<String> pila = new Stack<String>(); int i = 0;
while (i<cadena.length()) {
if(cadena.charAt(i)=='(') {pila.push("(");}
else if (cadena.charAt(i)==')') {
if (!pila.empty()){ pila.pop(); }
else { pila.push(")"); break; }
}
i++;
}
if(pila.empty()){ return true; } else { return false; }
}
}
Publicado hace 18th November 2015 por JuanPablo Salazar
0
Agregar un comentario
3.
NOV
17
Pilas:
En las Pilas se puede acceder a los elementos de la lista solo a través de la cima
de la misma.
Se puede acceder a los elementos de la Pila solo a través del sistema LIFO.
Se considera como una estructura de datos Las In Fist Out
Solo se puede agregar elementos a la parte superior de la Pila.
Colas:
0
Agregar un comentario
4.
NOV
16
Pilas en Java
La pila es una secuencia de elementos del mismo tipo en la que el acceso a la misma se realiza
por un único lugar denominado cima:
Vemos como el acceso a los elementos de la pila se realiza siempre sobre un único extremo.
Las operaciones que caracterizan la pila son las de introducir un nuevo elemento sobre la cima
(push) y la de extraer el elemento situado en la cima (pop). Una forma de ver esta estructura de
datos es como una pila de libros en la que sólo se puede coger el libro que está en la cima o
apilar más libros sobre la misma, pero los libros que sostienen la pila no son accesibles pues de
otro modo todo se desmoronaría.
De aqui que decimos que una lista se comporta como una pila, ya que las inserciones y las extracciones solo pueden hacerse
desde la parte superior de la pila. Esto se conoce también como LIFO (Last In First Out).
Las pilas son muy útiles en varios escenarios de programación. Dos de los más comunes
son:
El interfaz en Java que define esta clase de objetos y sus métodos son los siguientes:
Pila.java
PilaEnlazada.java
A continuación vemos como se insertan los nodos por la cima de la pila. Para ello se
crea un nuevo nodo y se le asigna como siguiente nodo la antigua cima de la pila. El
siguiente paso es actualizar la cima de la pila con el nuevo nodo creado.
El funcionamiento del pop es el siguiente. Si la lista esta vacía devuelve un valor nulo.
En caso contrario actualiza la cima al siguiente elemento por debajo del nodo situado
en la cima y devuelve el valor del nodo cima:
El mecanismo que sigue el método primero es similar al visto en el pop, aunque se
elimina la cima, únicamente se devuelve su valor:
http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=608:la-estructura-de-datos-
pila-en-java-clase-stack-del-api-java-ejemplo-simple-y-ejercicios-resueltos-cu00920c&catid=58:curso-
lenguaje-programacion-java-nivel-avanzado-i&Itemid=180
http://www.ciberaula.com/articulo/pilas_en_java/
Colas en Java
En una Cola los elementos se añaden desde la parte de atrás o la parte final de la
cola, sin embargo la información se extrae desde el frente, es decir, los elementos
que se añadieron primero serán los primeros en salir, esto se conoce como estructura
FIFO (First In First Out).
Los elementos de la cola se añaden y se eliminan de tal manera que el primero en
entrar es el primero en salir. La adición de elementos se realiza a través de una
operación llamada encolar (enqueue), mientras que la eliminación se denomina
desencolar (dequeue). La operación de encolar inserta elementos por un extremo
de la cola, mientras que la de desencolar los elimina por el otro.
El siguiente interfaz muestras las operaciones típicas para colas:
Cola.java
La siguiente es una posible implementación de colas mediante la clase Nodo:
ColaEnlazada.java
Vemos como la clase Cola contiene dos campos, cola y cabecera que apuntan al
principio y al final de la cola. La cabecera la utilizaremos para extraer elementos.
Para insertar utilizaremos la cola.
La operación encolar crea un nodo cuyo sucesor es nulo. Esto es porque añadimos al
final de la cola, es decir, donde apunta el campo cola. Si la cola es vacía la cabecera y
la cola apuntan al mismo objeto Nodo.
http://www.ciberaula.com/articulo/colas_en_java/
http://es.slideshare.net/RoverOportunity2012/java-pilas-ycolas
?
1 /**
2 *
* E-Mail : shamirdhc31@gmail.com
3
* Blog : http://javadhc.blogspot.com
4 *
5 */
6
7 import javax.swing.JOptionPane;
8
9 public class ColaArray
10 {
private int MAX;
11 private int[] COLA;
12 private int FRENTE;
13 private int FINAL;
14
15 public ColaArray()
{
16 this.MAX = 100;
17 this.FRENTE = 0;
18 this.FINAL = 0;
19 this.COLA = new int[this.MAX+1];
20 }
21
public ColaArray(int MAX)
22 {
23 this.MAX = MAX;
24 this.FRENTE = 0;
25 this.FINAL = 0;
26 this.COLA = new int[this.MAX+1];
}
27
28 public boolean IsColaLlena()
29 {
30 if(this.FINAL == this.MAX)
31 {
return true;
32 }
33 else
34 {
35 return false;
36 }
}
37
38 public boolean IsColaVacia()
39 {
40 if(this.FRENTE == this.FINAL)
41 {
42 return true;
}
43 else
44 {
45 return false;
46 }
}
47
48 public void InsertarCola()
49 {
50 if(this.IsColaLlena())
51 {
52 JOptionPane.showMessageDialog(null,"LA COLA ESTÁ LLENA");
}
53 else
54 {
55 int ITEM;
56
57 ITEM = Integer.parseInt(JOptionPane.showInputDialog(null,"INGRESE EL IT
58
59 this.FINAL++;
this.COLA[FINAL] = ITEM;
60
61 }
62 }
63
64 public void EliminarCola()
65 {
if(this.FRENTE == this.FINAL)
66 {
67 JOptionPane.showMessageDialog(null,"LA COLA ESTA VACIA");
68 }
69 else
70 {
for(int i=FRENTE;i < FINAL - 1;i++)
71 {
72 COLA[i] = COLA[i+1];
73 }
74
75 FINAL--;
76 }
}
77
78 public void MostrarCola()
79 {
80 if(this.IsColaVacia())
81 {
JOptionPane.showMessageDialog(null,"LA COLA ESTÁ VACIA\n NO HAY DATOS Q
82 }
83 else
84 {
85 String MOSTRAR = "";
86
87 for(int i=FRENTE+1;i<=FINAL;i++)
{
88 MOSTRAR = MOSTRAR + COLA[i]+"\n";
89 }
90
91 JOptionPane.showMessageDialog(null,"TOTAL ES : "+this.FINAL+"\n"+"LOS D
92 }
93 }
94
public void VaciarCola()
95 {
96 FRENTE = 0;
97 FINAL = 0;
98 }
99 }
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
?
1 /**
*
2 * E-Mail : shamirdhc31@gmail.com
3 * Blog : http://javadhc.blogspot.com
4 *
5 */
6
import javax.swing.JOptionPane;
7
8 public class MainColaArray
9 {
10 public static ColaArray Cola;
11
12 public static void main(String[] ARGUMENTOS)
13 {
int MAX;
14
15 MAX = Integer.parseInt(JOptionPane.showInputDialog(null,"INGRESE EL TAMAÑO D
16 Cola = new ColaArray(MAX);
17
18 MenuCola();
19 }
20
public static void MenuCola()
21
{
22 int Opcion;
23
24 do
25 {
26 Opcion = Integer.parseInt(JOptionPane.showInputDialog(null,
"1. INGRESAR DATOS\n"+
27 "2. ELIMINAR DATOS\n"+
28 "3. OBSERVAR DATOS\n"+
29 "4. VACIAR COLA\n"+
30 "5. SALIR\n"+
31 "--------------------------------------------------------\n"+
"INGRESE LA OPCION [1 - 5]","MENU COLA",JOptionPane.QUESTION_MES
32
33 switch(Opcion)
34 {
35 case 1: Cola.InsertarCola();break;
36 case 2: Cola.EliminarCola();break;
37 case 3: Cola.MostrarCola();break;
case 4: Cola.VaciarCola();break;
38 case 5: System.exit(0);break;
39 default: JOptionPane.showMessageDialog(null,"INGRESE UNA OPCION VALI
40 }
41 }
while(true); //-- SEGUIRA HASTA QUE OPCION SEA IGUAL A 5
42 }
43}
44
45
46
47
48
49
50
51