jump to navigation

EJERCICIO 2 Agosto 2, 2008

Posted by beceoca in 1.
trackback

BEATRIZ GARCÍA

EJERCICIO 2 ENUNCIADO

 

 

En este ejercicio vamos a crear una estructura de datos compleja como se muestra en la figura:

 

 

 

Cola:

 

 PRIMERO—-                                                         ——NULL                                  

 

NODO

 

 

 

 

 

 

 

 

 

 

 

 

En cada nodo se almacena  una pila:

 

 

 

 

Posición 1

Posición 2

.

.

.

Posición N

 

 

 

 

En cada posición de la pila se almacena un vector:

 

 

 

Posición 1

Posición 2

. . . . . . . . . . . . . . .

Posición N

 

 

 

 

Y en cada posición del vector se almacenará un número entero.

 

 

 

Primero hay que programar una cola utilizando para ello una lista enlazada, de esta manera conseguimos que la cola sea dinámica (da igual el número de elementos que insertemos, el límite está en la RAM del ordenador).

 

Esta cola debe incluir estos métodos:

 

·Encolar elementos (enqueue).

·Desencolar elementos (dequeue).

·Indicar si la cola está vacía.

·Imprimir por pantalla todos los contenidos de la cola.

 

Además, en la cola se almacenará solamente pilas, es decir, los elementos a encolar serán pilas, o lo que es lo mismo, cada nodo de la lista enlazada almacenará una pila.

Cada una de estas pilas, cuya clase también hay que programar, debe incluir estos métodos:

 

 

·   Introducir un elemento en la pila (push).

·   Extraer un elemento de la pila (pop).

·   Indicar si la pila está vacía.

·   Indicar si la pila está llena.

·   Imprimir por pantalla todos los contenidos de la pila.

 

 

La pila se implementará mediante un array (memoria estática).Cada una de estas pilas almacenará vectores, es decir, que almacenará un vector en cada posición de la pila.

 

 

 

NOTA: cuando se invoque al método imprimir de la cola implica imprimir cada una de las pilas almacenadas en ella y a su vez imprimir todos los vectores que almacena y también imprimir todos los objetos que estén guardados en cada vector uno debajo de otro considerando que dichos objetos serán números enteros.

 

 

EJERCICIO2 SOLUCIÓN  

 

 

CLASE COLALISTA

 

 

public class ColaLista {

 

private Nodo primero;

private int ultimo;

 

public ColaLista(){

 

primero=null;

ultimo= 0;

 

}

 

public void enqueue(Pila pila){

 

Nodo nodo=new Nodo(primero,pila);

Primero=nodo;

ultimo++;

 

}

 

public Pila dequeue(){

 

Nodo actual=primero;

 

for(int i =0;i<ultimo;i++){

actual=actual.dameSiguiente();

}

ultimo–;

return actual;

 

}

 

 

public boolean vacia(){

 

return primero=null;

 

}

 

 

 

 

 

 

 

public void imprimir(){

 

Nodo actual=primero;

 

while(actual!=null){

 

System.out.println(actual.damePila());

actual=actual.damePila();

 

}

 

 

}

 

 

}FIN CLASE COLALISTA

 

 

 

CLASE NODO

 

 

public class Nodo{

 

private Nodo siguiente;

private Pila pila;

 

public Nodo(Nodo siguiente, Pila pila){

 

this.siguiente=siguiente;

this.pila=pila;

 

}

 

 

public Nodo dameSiguiente{

 

return this.siguiente;

 

}

 

 

public Pila damePila(){

 

return this.pila;

 

}

 

 

public void ponNodo(Nodo siguiente){

 

this.siguiente=siguiente;

 

}

 

 

 

public void ponPila(Pila pila){

 

this.pila=pila;

 

}

 

}FIN CLASE NODO

 CLASE PILA

 

public class Pila{ 

 

private int numElementos;

private Vector elementosPila[];

private int indice;

 

public Pila(int numElementos){

 

this.numElementos=numElementos;

indice = -1;

elementosPila=new Vector [numElementos];

 

}

 

 

public void push(Vector v){

 

indice++;

elementosPila[indice]=v;

 

}

 

 

public Vector pop(){

 

Vector vector=elementosPila[indice];

indice–;

return vector;

 

}

 

 

public boolean vacia(){

 

return (indice = = -1);

 

}

 

 

 

public boolean llena(){

 

return (indice = = numElementos-1);

 

}

 

 

 

public void imprimir(){

 

 for(int i = 0; i<=indice; i++){

 

 System.out.println(elementosPila[i]);

 

}

}

}FIN CLASE PILA

 

 

EJERCICIO 2 CONCEPTOS

 

            En este segundo ejercicio los conceptos que se han tratado han sido:

 

-El concepto de pila

-El concepto de cola

-El concepto de lista

-El concepto de vector

 

 

 

 

 

 

 

 

 

 

 

 

Comentarios»

No comments yet — be the first.