huesitowarez Posted June 30, 2012 Report Share Posted June 30, 2012 (edited) hola a todos, tengo una pilla hecha en java y ahora tengo que hacer una cola y nose si tendria que modificar el pop para sacar un elemento del otro lado, y los otros metodos dejarlos igual :/ ojala puedan ayudarme :) gracias :)aca les dejo la Pila u.u public class Pila{Nodo_Cabeza P=new Nodo_Cabeza();Pila(){ }public boolean Empty(){if(P.Tope==null && P.Fin==null)return(true);elsereturn(false); } public void Push(Objeto x){Nodo p=new Nodo(x);if(Empty())P.Tope=P.Fin=p; else{ p.sgte=P.Tope; P.Tope=p; }}public Objeto Pop(){Nodo p;if(Empty()){System.out.println("Error de Sistema... Volcado de Pila");return(null);} else{p=P.Tope;if(P.Tope==P.Fin)P.Tope=P.Fin=null;else P.Tope=p.sgte;p.sgte=null;return(p.info);} } public Objeto Top(){Nodo p;if(Empty()){System.out.println("Error de Sistema... Volcado de Pila");return(null);} elsereturn(P.Tope.info); } } Edited June 30, 2012 by huesitowarez Link to comment Share on other sites More sharing options...
zafrada Posted July 2, 2012 Report Share Posted July 2, 2012 Obviamente en vez de pop, se llamará dequeue, y tendría que sacar los elementos del otro extremo. El método Empty debería llamarse Is_empty() o similar para que se entienda mejor lo que hace. Yo hace un tiempo implementé una lista dinámica en Java, el objetivo era hacer algo similar al arraylist, pero sin usar arrays. Acá te dejo el código, puedes modificarlo para hacer tanto una pila como una cola: /*lista.java * Métodos implementados: * insertar con add(), tanto en posición específica como al final por default. * eliminar con remove() en una posición específica. * obtener el tamaño con size() * cambiar un valor en una posición específica con set() * * faltan y son importantes: * contain() * clone() * append() * * Autor: Erasmo Marín G. * Licencia: GPL, osea, si lo modificas o usas, no puedes borrar el copyright. */ public class lista<E> implements Comparable<E>{ protected E element; protected lista<E> nodo; private static int size = 1; //constructor public lista(E element){ this.set(element); this.nodo = null; } public void add(E element){ if (element==null) return; lista<E> aux=this; while(aux.getNext() != null) aux=aux.getNext(); aux.nodo = new lista<E>(element); size++; } public void add(int index, E element){ if (element==null) return; lista<E> nuevo = new lista<E>(element); lista<E> aux=this; if(index==0) { this.add(1,this.element); this.element = element; } else{ for(int i=0;i<index-1;i++) aux=aux.getNext(); nuevo.nodo = aux.nodo; aux.nodo = nuevo; size++; } } private lista<E> getNext(){ return this.nodo; } @SuppressWarnings("static-access") protected lista<E> getNodo(int index){ lista<E> aux=this; //recordatorio: agregar los throw if(index<0 || index>aux.size) return null; for(int i=0;i<index;i++) aux=aux.getNext(); return aux; } protected E getElement() { return element; } protected void set(E element) { this.element = element; } public void set(int index /*from 0 to .size()*/, E element){ this.getNodo(index).set(element); } @SuppressWarnings("static-access") public E get(int index /*from 0 to .size()*/){ lista<E> aux=this; //recordatorio: agregar los throw if(index<0 || index>aux.size) return null; for(int i=0;i<index;i++) aux=aux.getNext(); return aux.getElement(); } public void remove(int index /*from 0 to .size()*/){ //recordatorio: agregar los throw if(index<0) return; lista<E> aux=this; if(index==0) { this.element = this.nodo.element; this.remove(1); } else{ for(int i=0;i<index-1;i++) aux=aux.getNext(); aux.nodo = aux.nodo.nodo; size--; } } //FIXME - equals sólo comprueba referencias, por lo que si se ingresa una copia, no lo eliminará public void remove(E element){ for(int i=0;i<size;i++){ //acá hay que mejorar el código para hacerlo más óptimo if(this.element.equals(element)){ this.remove(i); } } } // public int getSize() { return size; } @Override public int compareTo(E arg0) { // TODO Auto-generated method stub return 0; } } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now