Está en la página 1de 8

BICOLA

* Bicolas: son colas en donde los nodos se pueden añadir y quitar por ambos
extremos; se les llama DEQUE (Double Ended QUEue). Para representar las
bicolas lo podemos hacer con un array circular con Ini y Fin que apunten a cada
uno de los extremos.

La doble cola ó bicola es una cola bidimensional en la que las inserciones y


eliminaciones se pueden realizar en cualquier de los dos lados de la lista pero
no por la mitad

Una bicola es un conjunto de elemento al que se pueden añadir o quitar


elementos en cualquier extremo del mismo.

Hay variantes:
* Bicolas de entrada restringida: Son aquellas donde la inserción sólo se hace
por el final, aunque podemos eliminar al principio ó al final.

* Bicolas de salida restringida: Son aquellas donde sólo se elimina por el final,
aunque se puede insertar al principio y al final.

Emmy Núñez Carrera: Ing. de Sistemas


COLAS DE PRIORIDAD
* Colas de prioridad: son aquellas que cumplen dos reglas :
1. De dos elementos siempre se atenderá antes al que tenga mayor prioridad.
2. Si dos elementos tienen la misma prioridad se atiende primero el que llego
antes.
Realización Se ponen todos los nodos en la misma cola. Su particularidad es que
cada nodo tiene un campo adicional con la prioridad del dato; de tal forma que
cuando insertamos nuevos datos, el nuevo nodo, se inserta al final de la cola de
los que tengan su misma prioridad navi.

Emmy Núñez Carrera: Ing. de Sistemas


EJEMPLOS DE BICOLA Y COLA DE PRIORIDADES

1
2
3 import java.util.Vector;
4 /*import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.FileOutputStream;
7 import java.io.ObjectInputStream;
8 import java.io.ObjectOutputStream;
9 import java.io.Serializable;*/
10 import java.io.*;
11
12
13 public class Bicola<G> implements Serializable
14 {
15
16 // PROPIEDADES:
17 private Vector<Nodo<G>> vNodos;
18 private static final long serialVersionUID = 3717013638745390665L;
19
20
21 // CONSTRUCTOR:
22 // Se instancia un Vector de Nodos Genericos. (Del tipo con el que instanciamos
23 la Bicola).
24 public Bicola()
25 {
26 vNodos = new Vector<Nodo<G>>(5, 2);
27 }
28
29
30 // METODOS:
31 // Se devuelve el numero de elementos usados en el Vector.
32 public int getNumDeNodos()
33 {
34 return vNodos.size();
35 }
36
37
38 // Se añade un Nodo a la izquierda y se desplazan los demas una posicion a la
39 derecha en el indice.

Emmy Núñez Carrera: Ing. de Sistemas


40 public void addNodoIzquierda( G dato )
41 {
42 vNodos.add(0, new Nodo<G>(dato));
43 }
44
45
46 // Se añade al final del Vector un nuevo Nodo:
47 public void addNodoDerecha( G dato )
48 {
49 vNodos.addElement(new Nodo<G>(dato));
50 }
51
52
53 // Se copia el primer elemento en temp, despues se elimina del Vector.
54 public G getNodoIzquierda()
55 {
56 G temp = vNodos.firstElement().getDatoNodo();
57 vNodos.removeElementAt(0);
58 return temp;
59 }
60
61
62 // Se copia el último elemento en temp, despues se elimina del Vector.
63 public G getNodoDerecha()
64 {
65 G temp = vNodos.lastElement().getDatoNodo();
66 vNodos.removeElementAt(vNodos.size() - 1);
67 return temp;
68 }
69
70
71 // Se concatenan todos los elementos del Vector en cadena y luego se devuelve.
72 public String toString()
73 {
74 String cadena = "";
75
76 for( int i = 0; i < vNodos.size(); i++ )
77 cadena += vNodos.get(i).getDatoNodo() + ", ";
78
79 return cadena;
80 }
81

Emmy Núñez Carrera: Ing. de Sistemas


82
83 // Lee un objecto Bicola desde el fichero backup y se devuelve por "valor".
84 public Bicola<G> readBicolaFichero()
85 {
86 FileInputStream fichEntrada = null;
87 ObjectInputStream objEntrada = null;
88 Bicola<G> temp = null;
89
90
91 try
92 {
93 fichEntrada = new FileInputStream("backup.dat");
94 objEntrada = new ObjectInputStream(fichEntrada);
95 temp = (Bicola<G>) objEntrada.readObject();
96 }
97 catch( FileNotFoundException e )
98 {
99 System.out.println("El sistema no puede encontrar el archivo
100 especificado");
101 }
102 catch( ClassNotFoundException e )
103 {
104 System.out.println("El contenido leido en \"backup.dat\" no era el
105 esperado.");
106 }
107 catch( Exception e )
108 {
109 System.out.println(e);
110 }
111 finally
112 {
113 // Como ultimo paso se cierran los ficheros.
114 try
115 {
116 if( objEntrada != null )
117 objEntrada.close();
118 if( fichEntrada != null )
119 fichEntrada.close();
120 }
121 catch( Exception e )
122 {
123 System.out.println(e);

Emmy Núñez Carrera: Ing. de Sistemas


124 }
125
126 }
127
128 return temp;
129 }
130
131
132 // Recibe por referencia un objeto Bicola que es guardado en el fichero backup.
133 public void writeBicolaFichero( Bicola<G> bicola )
134 {
135 FileOutputStream fichSalida = null;
136 ObjectOutputStream objSalida = null;
137
138 try
139 {
140 fichSalida = new FileOutputStream("backup.dat");
141 objSalida = new ObjectOutputStream(fichSalida);
142 objSalida.writeObject(bicola);
143 }
144 catch( FileNotFoundException e )
145 {
146 System.out.println("El sistema no puede encontrar el archivo
147 especificado");
148 }
149 catch( Exception e )
150 {
151 System.out.println(e);
152 }
153 finally
154 {
155 // Como ultimo paso se cierran los ficheros.
156 try
157 {
158 if( objSalida != null )
159 objSalida.close();
160 if( fichSalida != null )
161 fichSalida.close();
162 }
163 catch( Exception e )
164 {
165 System.out.println("No se pudo cerrar el fichero.");

Emmy Núñez Carrera: Ing. de Sistemas


166 }
167
168 }
}
}

********************************************************************

1. import javax.swing.*;
2. public class javaapplication16 {
3. public static void main(String[] args) {
4. int a[] = new int[5],i=1,b=0;
5. NewClass obj=new NewClass();
6. while (i<2){
7. Object[]botones =
{"Ingresar","Eliminar","Salir"};
8. i = JOptionPane.showOptionDialog(null,"Elija
Opcion","COLA",JOptionPane.DEFAULT_OPTION,JOptionPane.WA
RNING_MESSAGE,null,botones,botones[0]);
9. switch(i){
10. case 0:
11. b=obj.ingresar(a,b);
12. break;
13. case 1:
14. b=obj.eliminar(a,b);
15. break;
16. }
17. }
18. }
19. }
20.
21. import javax.swing.*;
22. public class NewClass {
23. public void imprimir(int cola[],int k){
24. int x;
25. for(x=0;x<k;x++){
26. JOptionPane.showMessageDialog(null,cola[x],"V
alor",JOptionPane.WARNING_MESSAGE);
27. }
28. }
29. int ingresar (int cola[], int j)
30. {
31. String re;

Emmy Núñez Carrera: Ing. de Sistemas


32. re=JOptionPane.showInputDialog (
null,"Introduzca un valor","Mi programa en
Java",JOptionPane.QUESTION_MESSAGE );
33. cola[j]=Integer.parseInt(re);
34. j++;
35. NewClass obj=new NewClass();
36. obj.imprimir(cola,j);
37. return(j);
38. }
39.
40. int eliminar(int cola[],int j)
41. {
42.
43.
44. }
45. }

Emmy Núñez Carrera: Ing. de Sistemas

También podría gustarte