Java - Pila como lista ligada

   
Vista:

Pila como lista ligada

Publicado por jc. (5 intervenciones) el 05/10/2008 21:22:57
Necesito ayuda, me cambiaron el ejercicio de implementar pilas como listas ligadas y la verdad no he podido solucionarlo.

Les agradezco mucho su ayuda.

Ejercicio:

Se tiene una lista con los datos de los clientes de una empresa de telefonía celular, los cuales pueden aparecer repetidos en una lista, si tienen registrado mas de un numero telefónico. La compañía para su próximo aniversario desea enviar un regalo a sus clientes, sin repetir regalos a un mismo cliente.
Los regalos se encuentran almacenados en una pila de regalos.

Se desea elaborar un programa en java que permita generar una nueva estructura de una pila como lista ligada donde los clientes aparezcan solo una vez con sus regalos asignados.

ENTRADAS

Nodo
Lista ligada clientes
Pila de regalos

SALIDAS

Pila como lista ligada de clientes con su regalo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pila como lista ligada

Publicado por Gilberto (378 intervenciones) el 06/10/2008 00:33:09
public class Nodo {

private Object item;
private Nodo next;

/*
* Constructor por default
*/
public Nodo() {}

/*
*
*/
Nodo(Object it,Nodo nx) {
item = it;
next = nx;
}

/*
* método para obtener la referencia al objeto
*/
public Object getItem() {
return item;
}

/*
* método para obtener la referencia al siguiente nodo
*/
public Nodo getNextNodo() {
return next;
}

/*
* método para cambiar el valor del siguiente nodo
*/
public void setNextNodo(Nodo n) {
next = n;
}
}

public class ListaEnlazada {


private Nodo first;

ListaEnlazada() {
first = null;
}

/*
* Añadir nuevo item al principio de la lista
*/
public void addOnTop(Object it) {
if(first == null)
first = new Nodo(it,null);
else {
Nodo n = new Nodo(it,first);
first = n;
}
}


/*
* Método para recuperar la referencia a un objeto
*/
public Object getAndRemove(int i) {
if(first == null)
return null;
if(i == 0) {
Object o = first.getItem();
first = first.getNextNodo();
return o;
}
Nodo nodo = first;
while(--i >= 0) {
if(nodo == null) return null;
nodo = nodo.getNextNodo();
}
Object o = nodo.getItem();
nodo = nodo.getNextNodo();
return o;
}

/*
*
*/
public boolean contains(Object key) {
if(first == null)
return false;
Nodo nodo = first;
while(nodo != null) {
if(nodo.getItem().equals(key)) return true;
nodo = nodo.getNextNodo();
}
return false;
}
}

public class Pila {

private ListaEnlazada lista;

Pila(){
lista = new ListaEnlazada();
}

public void push(Object it) {
lista.addOnTop(it);
}

public Object pop() {
return lista.getAndRemove(0);
}

public boolean contains(Object key) {
return lista.contains(key);
}
}

public class TestPila {
public static void main(String[] args) {
int[] arr = new int[20];
Pila pila_enteros = new Pila();

for(int i=0; i<20; i++)
arr[i] = (int)(Math.random()*10) + 1;

for(int j=0; j<20; j++) {
Integer n_int = new Integer(arr[j]);
if(!pila_enteros.contains(n_int))
pila_enteros.push(n_int);
}

for(int k=0; k<20; k++)
System.out.print(arr[k]+" ");

System.out.println();
Integer n;
while((n = (Integer)pila_enteros.pop()) != null)
System.out.print(n.intValue()+" ");
}
}

Con este código puedes apilar cualquier objeto que sobreescriba el método equals, para comprobar la existencia del item en la lista (por supuesto, se puede comprobar solo una propiedad del objeto, no necesariamente el objeto completo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pila como lista ligada

Publicado por luis (1 intervención) el 31/10/2008 21:31:20
tan amable me ayudada con ejemplo de pila implementada como listaligada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pila como lista ligada

Publicado por nicolas (1 intervención) el 10/04/2010 16:04:17
muchas gracias luis...me sirve el codigo para sacarme de unos apuros :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pila como lista ligada

Publicado por gustavo gustavo.v@accesit.com (1 intervención) el 30/08/2015 23:42:46
tendrás el proyecto para descargarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar