Professional Documents
Culture Documents
1
package ListaPuntos;
package ListaPuntos;
public Nodo(Punto p)
{
dato = p;
enlace = null;
}
public Nodo(Punto p, Nodo n)
{
dato = p;
enlace = n;
}
}
EJEMPLO 8.2
import java.io.*;
class Nodo
{
int dato;
Nodo enlace;
public Nodo(int x)
{
dato = x;
enlace = null;
}
public Nodo(int x, Nodo n)
{
dato = x;
enlace = n;
}
public int getDato()
{
return dato;
}
public Nodo getEnlace()
{
return enlace;
}
public void setEnlace(Nodo enlace)
{
this.enlace = enlace;
}
public Lista()
{
primero = null;
}
private int leerEntero()
{
BufferedReader en = new BufferedReader( new
InputStreamReader (System.in));
int d = -1;
try {
System.out.print(" Entero: ");
d = Integer.parseInt(en.readLine());
}
catch(Exception o)
{
System.out.print(" Error entrada: " + o);
}
return d;
}
package ListaEnteros;
public Nodo(int x)
{
dato = x;
enlace = null;
}
}
package ListaEnteros;
public Lista()
{
primero = null;
}
public Lista insertarCabezaLista(int entrada)
{
Nodo nuevo ;
nuevo = new Nodo(entrada);
nuevo.enlace = primero;
primero= nuevo;
return this;
}
public void visualizar()
{
Nodo n;
int k = 0;
n = primero;
while (n != null)
{
System.out.print(n.dato + " ");
n = n.enlace;
k++;
System.out.print( (k%15 != 0 ? " " : "\n"));
}
}
}
import java.util.*;
import ListaEnteros.*;
public class ListaAleatoria
{
public static void main(String [] a)
{
Random r;
int d;
Lista lista;
int k;
r = new Random();
lista = new Lista(); // crea lista vacía
k = Math.abs(r.nextInt() % 55); // número de nodos
// Son insertados elementos en la lista
for (; k > 0; k-- )
{
d = r.nextInt() % 99 ;
lista.insertarCabezaLista(d);
}
// recorre la lista para escribir sus elementos
System.out.println("Elementos de la lista generados al azar");
lista.visualizar();
}
}
EJERCICIO 8.2
import java.util.*;
import ListaEnteros.ListaOrdenada;
EJEMPLO 8.4
public Nodo buscarPosicion(int posicion)
{
Nodo indice;
int i;
class ListaEnRango
{
public static void main(String [] ar) throws IOException
{
Random r;
int d, x1,x2;
final int M = 29; // número de elementos de la lista
final int MX = 999;
BufferedReader entrada = new BufferedReader(
new InputStreamReader(System.in));
ListaDoble listaDb;
r = new Random();
listaDb = new ListaDoble();
a = iterador.siguiente();
while (a != null)
{
int w;
w = a.getDato();
if (!(w >= x1 && w <= x2)) // fuera de rango
listaDb.eliminar(w);
a = iterador.siguiente();
}
System.out.println("Elementos actuales de la lista");
listaDb.visualizar();
}
}
EJERCICIO 8.4
package listaCircularPalabra;
class Nodo
{
String dato;
Nodo enlace;
public Nodo (String entrada) {;}
}
public ListaCircular(){;}
public ListaCircular insertar(String entrada){;}
if (actual.enlace.dato.equals(entrada))
{
Nodo p;
p = actual.enlace; // Nodo a eliminar
if (lc == lc.enlace) // Lista con un solo nodo
lc = null;
else
{
if (p == lc)
{
lc = actual; // Se borra el elemento referenciado por lc,
// el nuevo acceso a la lista es el anterior
}
actual.enlace = p.enlace;
}
p = null;
}
}
}
/* clase con el método main(). Se escribe un sencillo menu para
elegir operaciones con la lista circular.
*/
import java.io.*;
import listaCircularPalabra.*;
class ListaPalabras
{
public static void main(String [] a) throws IOException
{
String palabra;
ListaCircular listaCp;
int opc;
BufferedReader entrada = new BufferedReader(
new InputStreamReader(System.in));
switch (opc) {
case 1: System.out.print("Palabra a eliminar: ");
palabra = entrada.readLine();
listaCp.eliminar(palabra);
break;
case 2: System.out.println("Palabras en la Lista:\n");
listaCp.recorrer();
break;
case 3: System.out.print("Eliminación de la lista.");
listaCp.borrarLista();
}
}while (opc != 3);
}
}
LISTA ORDENADA
package ListaEnteros;
}
LISTA DOBLEMENTE ENLAZADA
package listaDobleEnlace;
public class Nodo
{
int dato;
Nodo adelante;
Nodo atras;
public Nodo(int entrada)
{
dato = entrada;
adelante = atras = null;
}
package listaDobleEnlace;
Nodo nuevo;
actual = cabeza;
// Bucle de búsqueda
while ((actual != null) && (!encontrado))
{
/* la comparación se realiza con el método equals()...,
depende del tipo Elemento */
encontrado = (actual.dato == entrada);
if (!encontrado)
actual = actual.adelante;
}
// Enlace de nodo anterior con el siguiente
if (actual != null)
{
//distingue entre nodo cabecera o resto de la lista
if (actual == cabeza)
{
cabeza = actual.adelante;
if (actual.adelante != null)
actual.adelante.atras = null;
}
else if (actual.adelante != null) // No es el último nodo
{
actual.atras.adelante = actual.adelante;
actual.adelante.atras = actual.atras;
}
else // último nodo
actual.atras.adelante = null;
actual = null;
}
}
n = cabeza;
while (n != null)
{
System.out.print(n.dato + " ");
n = n.adelante;
k++;
System.out.print( (((k%10 != 0)&& (n!= null)) ? " " : "\n"));
}
}
}
ITERADOR DE LISTA DOBLE
package listaDobleEnlace;
package listaGenerica;
public Nodo(Object x)
{
dato = x;
enlace = null;
}
public Nodo(Object x, Nodo n)
{
dato = x;
enlace = n;
}
public Object leerDato()
{
return dato;
}
public Nodo siguiente()
{
return enlace;
}
}
// Declaración de la clase Lista.
package listaGenerica;
actual = primero;
anterior = null;
encontrado = false;
// Bucle de búsqueda
while ((actual!= null) && !actual.dato.equals(entrada))
{
if (!actual.dato.equals(entrada))
{
anterior = actual;
actual = actual.enlace;
}
}
if (actual != null)
{
// Se distingue entre que el nodo sea el cabecera
// o del resto de la lista
if (acual == primero)
{
primero = actual.enlace;
}
else
{
anterior.enlace = actual.enlace
}
actual = null;
}
}