Professional Documents
Culture Documents
*/
dato = t;
}
public T getDato() {
return dato;
}
public void setDato(T dato) {
this.dato = dato;
}
public Nodo<T> getSiguiente() {
return siguiente;
}
public void setSiguiente(Nodo<T> siguiente) {
this.siguiente = siguiente;
}
}
/** Indica si la lista esta vacia o no* @return True = esta vacia
*/
/**
* Inserta un objeto al principio de la lista
insertado
*/
* @param t Dato
basura
}
}
*/
if(!estaVacia()) {
aux=primero;
//Buscamos el penultimo, por eso hay dos
getSiguiente()
while(aux.getSiguiente().getSiguiente() != null){
aux=aux.getSiguiente();
}
//Marcamos el siguiente del antepenultimo como nulo,
eliminando el ultimo
aux.setSiguiente(null);
}
}
public T devolverUltimo(){
T elemen = null;
Nodo<T> aux;
if (!estaVacia()){
aux = primero;
//Recorremos
while(aux.getSiguiente() != null){
aux = aux.getSiguiente();
}
elemen = aux.getDato();
}
return elemen;
}
la posicion indicada */
/**
* Devuelve el nodo de la posicion indicada
* @param pos
* @return Nodo de la posicion indicada
*/
public Nodo<T> devolverNodo(int pos){
Nodo<T> aux=primero;
int cont=0;
if(pos<0 || pos>=cuantosElementos()){
System.out.println("La posicion insertada no es correcta");
}else{
//recorremos
while(aux!=null){
if (pos == cont){
//Devuelvo aux, con esto salimos de la funcin
return aux;
}
//Actualizo el siguiente
aux=aux.getSiguiente();
cont++;
}
}
return aux;
/**
* Inserta un nuevo nodo en la posicion indicada con el su dato
* @param pos
* @param dato
*/
public void introducirDato(int pos, T dato){
Nodo<T> aux=primero;
Nodo<T> auxDato=null; //Debemos crear un nodo para insetar el dato
Nodo<T> anterior=primero; //Debemos crear un nodo para insetar el
dato
int contador=0;
if(pos<0 || pos>cuantosElementos()){
System.out.println("La posicion insertada no es correcta");
}else{
if(pos==0){
insertarPrimero(dato);
}else if(pos==cuantosElementos()){
insertarUltimo(dato);
}else{
//Recorremos
while(aux!=null){
if (pos == contador){
//Creo el nodo
auxDato=new Nodo<>(dato, aux);
//El siguiente del anterior a aux es auxDato
anterior.setSiguiente(auxDato);
}
//Actualizo anterior
anterior=aux;
contador++;
aux=aux.getSiguiente(); //Actualizo siguiente
}
}
}
/**
* Modifica el dato indicado en el nodo de la posicion indicada
* @param pos
* @param dato
*/
public void modificarDato(int pos, T dato){
Nodo<T> aux=primero;
int cont=0;
if(pos<0 || pos>=cuantosElementos()){
System.out.println("La posicion insertada no es correcta");
}else{
//Recorremos
while(aux!=null){
if (pos == cont){
//Modificamos el dato directamente
aux.setDato(dato);
}
cont++;
aux=aux.getSiguiente(); //Actualizamos
}
}
/**
* Borra un elemento de la lista
* @param pos Posicin de la lista que queremos borrar
*/
public void borraPosicion(int pos){
Nodo<T> aux=primero;
Nodo<T> anterior=null;
int contador=0;
if(pos<0 || pos>=cuantosElementos()){
System.out.println("La posicion insertada no es correcta");
}else{
while(aux!=null){
if (pos == contador){
if (anterior==null){
primero = primero.getSiguiente();
}else {
//Actualizamos el anterior
anterior.setSiguiente(aux.getSiguiente());
}
aux=null;
}else{
anterior=aux;
aux=aux.getSiguiente();
contador++;
}
}
}
}
/**
* Devuelve el primer el elemento y lo borra de la lista
* @return Primer elemento
*/
public T devolverYBorrarPrimero(){
T dato=devolverPrimero();
quitarPrimero();
return dato;
}
/**
* Indica la posicin del primer dato que se encuentre
* @param t dato buscado
* @return Posicin del dato buscado, -1 si no se encuentra o esta vacia
*/
public int indexOf (T t){
Nodo<T> aux=primero;
if (estaVacia()){
return -1;
}else{
int contador=0;
boolean encontrado=false;
/**
* Indica la posicin del primer dato desde la posicion indicada
Nodo<T> aux;
if (estaVacia()){
return -1;
}else{
int contador=pos;
boolean encontrado=false;
return contador;
}else{
return -1;
}
}
}
/**
* Indica si un dato existe en la lista
* @param t Dato a comprobar
* @return Si el dato existe, devuelve true
*/
public boolean datoExistente(T t){
boolean existe=false;
Nodo<T> aux=primero;
if(aux.getDato().equals(t)){
existe=true;
}
//Actualizamos
aux=aux.getSiguiente();
}
return existe;
}
/**
* Muestra el contenido de la lista
*/
public void mostrar(){
System.out.println("Contenido de la lista");
System.out.println("---------------------");
Nodo<T> aux=primero;
while(aux!=null){
System.out.println(aux.getDato());//mostramos el dato
aux=aux.getSiguiente();
}
/**
* Devuelve el contenido de la lista en un String
* @return contenido de la lista
*/
@Override
public String toString(){
String contenido="";
Nodo<T> aux=primero;
while(aux!=null){
contenido+=aux.getDato()+"\n"; //guardamos el dato
aux=aux.getSiguiente();
}
return contenido;
}
}
Os dejo tambin un pequeo fichero de prueba para que veis como
funciona.
/**
* Muestra de funcionamiento de la lista enlazada
* @author DiscoDurodeRoer
*/
public class ListaEnlazadaSimple {
//Mostramos la lista
lista.mostrar();
System.out.println("");
lista.mostrar();
lista.mostrar();
lista.mostrar();
lista.mostrar();
System.out.println("");
lista.mostrar();
System.out.println("");
System.out.println("");
Por ultimo, aux vale null pero como en la comprobacin del while hemos
puesto que si aux!=null continue, como es null, se para.