Lista (estructura de datos)
En Ciencias de la Computación, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior y/o posterior. El principal beneficio de las listas enlazadas respecto a los array convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.
Una lista enlazada es un tipo de dato auto-referenciado porque contienen un puntero o link a otro dato del mismo tipo. Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en tiempo constante (suponiendo que dicho punto está previamente identificado o localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: Lista Enlazadas Simples, Listas Doblemente Enlazadas, Listas Enlazadas Circulares y Listas Enlazadas Doblemente Circulares.
Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ y Java, respectivamente, disponen de referencias para crear listas enlazadas.
Operaciones con listas simples en java
package listas;
//operaciones para listas simples
public class ListaImplements {
class Nodo{
//variables
public String dato;
public Nodo enlace;
Nodo (String n){
dato=n;//inicializacion
enlace=null;
}
}
Nodo inicio;
public void Lista(){
inicio=null;
}
public boolean vacia(){//cuando esta vacia
return(inicio==null);
}
public int Tamaño(){//saber el tamaño
int n=0;
Nodo temporal=inicio;
while(temporal!=null){
n++;
temporal=temporal.enlace;
}
return n;
}
public boolean Buscar(String elemento){//para buscar un elemento en la lista
Nodo temporal=inicio;
while(temporal!=null){
if(elemento.equals(temporal.dato))
return true;
else
temporal=temporal.enlace;
}
return false;
}
public void Insertar(String elemento){//insert un elemento en la lista
Nodo n=new Nodo(elemento);
}
public String Eliminar(){//eliminar un elemento en la lista
String temporal=inicio.dato;
inicio=inicio.enlace;
return temporal;
}
public static void main (String args[])
{
ListaImplements x= new ListaImplements();
}
}
EJEMPLO DE LISTAS ENLAZADAS
package listasenlazadas;
class Nodo {
//variables a itilizar
int dato;
Nodo enlace;
public Nodo(int a){
//inicializar variables
dato=a;
enlace=null;
}
}
class Lista{
private Nodo inicio;
public Lista(){
inicio=null;
}
public Lista Insertarcabeza(int a){//insertar arriba
Nodo nuevo=new Nodo(a);
nuevo.enlace=inicio;
inicio=nuevo;
return this;
}
public void Visualizar(){//ver que hay en cada uno de los nodos
Nodo actual;
actual=inicio;
while(actual!=null){
System.out.print(actual.dato+"");
actual=actual.enlace;
}
}
public Nodo Buscar(int dat){//buscar un dato
Nodo i;
try{
for(i=inicio;i!=null;i=i.enlace){
if(dat==i.dato)
return i;
}
catch(Exception e)()
return null;
}
}
}
package listasenlazadas;
public class Principal {
public static void main(String [] args){
Lista x=new Lista();
//datos de ejemplo
for(int i=0; i< n="i.Buscar(3);">
EJERCICIO
package listaligada;
import java.util.*;
public class ListaLigada {
public static void main (String args[]) {
Scanner leer = new Scanner(System.in);
ListaLigada x=new ListaLigada();
//variables a usar
int num;
int op;
LinkedList lista = new LinkedList(); //menu
do{
System.out.println( "\t Menú \t" );
System.out.println( "Operaciones con listas" );
System.out.println( "1.- Insertar al principio" );
System.out.println( "2.- Insertar al final" );
System.out.println( "3.- Borrar al principio" );
System.out.println( "4.- Borrar al final" );
System.out.println( "5.- Mostrar la lista" );
System.out.println( "6.- Borrar toda la lista" );
System.out.println( "7.- Salir" );
System.out.println( "\n" );
System.out.println( "Elija la operación que desee" );
op = leer.nextInt(); //coger la opcion
switch(op){
case 1:
System.out.println( "Inserte numero" );
//coger el numero y añadirlo a la lista de primeras
num = leer.nextInt();
lista.addFirst(num);
break;
case 2:
System.out.println( "Inserte numero" );
//anadir el numero a la lista
num = leer.nextInt();
lista.addLast(num);
break;
case 3:
System.out.println( "Se borrara el primer nodo" );
//remover de la lista
lista.removeFirst();
break;
case 4:
System.out.println( "Se borrara el nodo final" );
//remover nodo de el final de la lista
lista.removeLast();
break;
case 5:
System.out.println( "La lista es la siguiente" );
//tamaño de la lista
List lista2 = new ArrayList(lista);
Iterator it = lista2.iterator();
while (it.hasNext()){
System.out.println(it.next()+"");
}
break;
case 6:
System.out.println( "Se borraran todos los elementos de la lista" );
lista.clear();
break;
case 7:
System.out.println( "Al rato" );
break;
}
}
while( op != 7 );
}
}
EJERCICIO 2
package ejemplolista;
import java.util.*;
public class ListaAlumnos{
//variables qeu necesitamos
private String nom;
int calif1;
int calif2;
int calif3;
static double prom;
public static void main( String args[] ){
Scanner leer = new Scanner(System.in);
ListaAlumnos nodo = new ListaAlumnos();
int op;
ArrayList lista = new ArrayList(); //secuencia de lista
do{
System.out.println( "Ingrese el nombre del alumno:" );
nodo.nom = leer.next();
System.out.println( "Ingrese la primera calificación:" );
nodo.calif1 = leer.nextInt();
System.out.println( "Ingrese la segunda calificación:" );
nodo.calif2 = leer.nextInt();
System.out.println( "Ingrese la tercera calificación:" );
nodo.calif3 = leer.nextInt();
//lo qeu queda guardado
lista.add("Nombre del alumno:\n"+nodo.nom);
lista.add("Calificación 1:\n"+nodo.calif1);
lista.add("Calificación 2:\n"+nodo.calif2);
lista.add("Calificación 3\n"+nodo.calif3);
promedio(nodo.calif1, nodo.calif2, nodo.calif3);
lista.add("Su promedio es:\n"+prom);
System.out.println( "¿Desea ingresar otro alumno?" );
System.out.println( "1.-Si\t 2.-No" );
op = leer.nextInt();
}
while(op != 2);
List lista2 = new ArrayList(lista);
Iterator it = lista2.iterator();
while (it.hasNext()){
System.out.println(it.next()+"");
}
}
private static double promedio(int calif1, int calif2, int calif3){ //como resolver el promedio
int suma = calif1 + calif2 + calif3;
prom = suma/3;
return prom;
}
}
EJERCICIO 3
package ejerciciodelistas;//Paquete
import java.awt.BorderLayout;//importacion de librerias
import java.awt.Frame;
import java.awt.Label;
import java.awt.List;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class Listas extends Frame{
List lista = new List(0,true);
Label text= new Label ("Maravillas que se pueden visitar en la localidad elegida");
public Listas(){
super("elegir intinerario");
lista.add("Bienvenido");
lista.add("foiano de val fortore");
lista.add("baselice");
lista.add("San bartolomeo en Galdo");
lista.add("San marco de los Cavoti");
lista.add("Montefalcone en val fortore");
lista.add("Pesco Sannita");
lista.add("Colle Sannita");
lista.add("Castelvetere en val fortore");
lista.add("castelfranco en miscano");
lista.add("ginestra de los schiavoni");
lista.add("San giorgio la molara");
lista.add("molinara");
lista.add("Pietrelcina");
lista.add("Fragneto Monforte");
lista.add("Circello");
lista.add("Campolattaro");
add(lista,BorderLayout.CENTER);
add(text,BorderLayout.SOUTH);
addWindowListener(new listeWindowListener());
//lista.addItemListener(new escuchaLista());
setSize(350,100);
setResizable(false);
show();
}
class listeWindowListener implements WindowListener{
public void windowActivated(WindowEvent e){//la ventana se ve en primer plano
}
public void windowClosed(WindowEvent e){//salir de el explor5ador
}
public void windowClosing(WindowEvent e){//seleccionaren la lista aql cerrar
String[]s=lista.getSelectedItems();
int i=0;
System.out.println("itinerario seleccionado");
try{
while(true){
System.out.println(s[i++]);
}
}
catch (ArrayIndexOutOfBoundsException er){
System.out.println("que lo pases bien ");
}
System.exit(0);
}
public void windowDeactivated(WindowEvent e){//eventos de windows
}
public void windowDeiconified(WindowEvent e){
}
public void windowIconified(WindowEvent e){
}
public void windowOpened(WindowEvent e){
}
class escuchaLista implements ItemListener{
public void itemStateChanged(ItemEvent e){
int Ãndice=((Integer) e.getItem()).intValue();
if (Ãndice==0) text.setText("Rocca de los Rettori, arco de Trajano, anfiteatro Romano, ciudad espectáculo");
if (Ãndice==1) text.setText("localidad San Giovanni, Campanario, via Roma, lago, fiesta S.Giovanni, fiesta del emigrante");
if (Ãndice==2) text.setText("óasis ds San Leonardo");
if (Ãndice==3) text.setText("casco histórico");
if (Ãndice==4) text.setText("casco histórico");
if (Ãndice==5) text.setText("casco histórico");
if (Ãndice==6) text.setText("casco histórico");
if (Ãndice==7) text.setText("casco histórico");
if (Ãndice==8) text.setText("casco histórico");
if (Ãndice==9) text.setText("Bosque");
if (Ãndice==10) text.setText("casco histórico");
if (Ãndice==11) text.setText("Lago de San Giorgio");
if (Ãndice==12) text.setText("casco histórico");
if (Ãndice==13) text.setText("Piana Romana, casco histórico, casas de Padre Ão");
if (Ãndice==14) text.setText("Encuentro internacional de globos, Palacio Ducal");
if (Ãndice==15) text.setText("casco histórico");
if (Ãndice==16) text.setText("Dique de Campolattaro");
}
}
}
public static void main(String [] args){
Listas x= new Listas();
}
}
OPERACIONES RECURSIVAS
package listas2;
import javax.swing.JOptionPane;
public class IntSLLNode {
private IntSLLNode next;
public int info;
public IntSLLNode(){
}
public IntSLLNode(int i){
this(i,null);
}
public IntSLLNode(int i, IntSLLNode n){
int info= i;
next=n;
}
public void addToHead(int i,Object head){
head=newIntSLLNode(i,head);
if(tail==null)
tail=head;
}
public void addToTail(int i){
if(isEmpaty()){
Tail.next=newIntsLLNode(i);
tail=tail.next;
}
head=tail=newIntSLLNode(i);
}
public int deleteFromTail(){
int i=Head.info;
if(Head==tail){
Head=tail=null;
}
else{
IntSLLNodetmp
for(tmp=head;tmp.next!=tail;tmp=tmp.next){
tail.tmp;
tail.next=null;
}
}
}
public void PrintAll(){
for(IntSLLNode.tmp=head;tmp!=null;tmp=tmp.next){
System.out.print(tmp.info+"");
}
}
public boolean isInList(int i){
IntSLLNode tmp;
for(tmp=head;tmp!=null && tmp.info1=i;tmp=tmp.next){
returntmp!=null;
}
}
public static void main (String args[])
{
IntSLLNode x= new IntSLLNode();
}
}