¿Qué es una lista (List)?
Es un objeto tipo Collection ordenado que puede contener elementos duplicados. Al igual que los indices de los arreglos, los índices de los objetos List empiezan desde cero.
El primer paso es importar la libreria que contiene la clase java.util.ArrayList;
Definimos la clase con el nombre Lista con su método main.
Declaramos la lista y agregamos objetos tipo String con el método add, se utilizan los símbolos de mayor y menor que "<>" para indicar el tipo de dato que va a guardar la lista.
A continuación se presentan los métodos con los que cuenta la clase ArrayList
La salida de este programa es la siguiente.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package estructurasdatosdinamicas;
/**
*
* @author Administrador
*/
public class ListaEnlazada {
protected String Nombre;
protected Nodo Primero;
protected Nodo Ultimo;
public ListaEnlazada(String n)
{
Nombre = n;
Primero = Ultimo = null;
}
public ListaEnlazada()
{
this.Nombre = "Lista";
}
public Boolean Lvacia()
{
return Primero ==null;
}
public String getNombre(){
return Nombre;
}
public Nodo getPrimero(){
return Primero;
}
public Nodo getUltimo(){
return Ultimo;
}
public void InsertFrente(Object obj){
if(Lvacia())
Primero=Ultimo= new Nodo(obj);
else
Primero=new Nodo (obj, Primero);
}
public void InsertAtras(Object obj){
if(Lvacia())
Primero=Ultimo= new Nodo(obj);
else
Ultimo=Ultimo.sgte=new Nodo (obj);
}
public Object DeleteFrente(){
Object DatoRemovido = null;
if(Lvacia())
System.out.println("Vacia");
DatoRemovido= Primero.Datos;
if(Primero.equals(Ultimo))
Primero = Ultimo = null;
else
Primero = Primero.sgte;
return DatoRemovido;
}
public Object DeleteAtras(){
Object DatoRemovido = null;
if (Lvacia()){
System.out.println("Vacia");
}
DatoRemovido = Ultimo.Datos;
if(Primero.equals(Ultimo)){
Primero = Ultimo = null;
}
else{
Nodo Actual = Primero;
while (Actual.sgte != Ultimo)
Actual = Actual.sgte;
Ultimo = Actual;
Actual.sgte= null;
}
return DatoRemovido;
}
public Object getElementoDeIndice(int Posicion){
if(Lvacia()){
return null;
}
else{
Nodo actual = Primero;
int cont = 1;
while((actual != null)&& (cont < Posicion)){
actual = actual.sgte;
cont++;
}
if((actual != null) && (cont == Posicion - 1)){
return actual.Datos;
}
else{
return null;
}
}
}
public void InsertarElementoEnIndice(int Posicion, Object obj){
Nodo nuevo;
Nodo actual;
if(Lvacia()){
return;
}
else{
actual = Primero;
int cont = 1;
while((actual != null) && (cont == Posicion -1)){
actual = actual.sgte;
cont++;
}
if ((actual != null) && (cont == Posicion - 1)){
nuevo = new Nodo(obj , actual.sgte);
actual.sgte= nuevo;
}
}
}
public Object DeleteElementoDeIndice (int Posicion){
Object DatoRemovido;
Nodo actual;
if(Lvacia()==true){
return null;
}
else{
if(Posicion == 1){
DatoRemovido=Primero.Datos;
Primero=Primero.sgte;
return DatoRemovido;
}
else{
actual=Primero;
int cont=1;
while((actual != null) && (cont<Posicion-1)){
actual=actual.sgte;
cont++;
}
if((actual !=null)&&(cont==Posicion-1)){
DatoRemovido=actual.sgte.Datos;
actual.sgte=actual.sgte.sgte;
return DatoRemovido;
}
}
return null;
}
}
}
Creacion de Nodo
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package estructurasdatosdinamicas;
/**
*
* @author Administrador
*/
public class Nodo {
public Object Datos;
public Nodo sgte;
public Nodo anterior;
public int CI;
public int edad;
public Nodo()
{
Datos = sgte = anterior = null;
}
public Nodo (Object obj)
{
Datos = obj;
sgte = anterior = null;
}
public Nodo (Object obj, Nodo sig)
{
Datos = obj;
sgte = sig;
}
public void GetDatos(Object cd)
{
Datos = cd;
}
public void SetAnterior(Nodo ant)
{
anterior = ant;
}
public void SetSgte(Nodo sg)
{
sgte = sg;
}
public Nodo SetSgte()
{
return sgte;
}
public Nodo GetAnteruior()
{
return anterior;
}
}
Nodos doblemente circular
*/
package estructurasdatosdinamicas;
/**
*
* @author Reynaldo
*/
public class NodosListaDobleCircular {
Object datos;
NodosListaDobleCircular siguiente;
NodosListaDobleCircular anterior;
NodosListaDobleCircular (Object valor){
datos =valor;
siguiente =anterior= null;
}
NodosListaDobleCircular (Object valor, NodosListaDobleCircular signodo){
datos = valor;
siguiente = signodo;
}
Object getObject(){
return datos;
}
NodosListaDobleCircular getnext() {return siguiente; }
}
Trabajo corregido
ResponderEliminar