lista ligada

17
Lista Ligada import java.awt.*; import java.net.*; import java.io.*; import java.awt.event.*; import java.util.*; class Tabla extends Frame { Panel panel; TextField textver,textinser,textbus; TextArea textimpri; Button mostrar, buscar, insertar, cierra; Label lab1, lab2, titulo; public static final int size_hash = 5; LinkedList []Arreglo = new LinkedList[size_hash]; Tarea1 prueba = new Tarea1(Arreglo,size_hash); public Tabla(String title) { super (title); Font f = new Font( "Tahoma", 0 , 13 ); titulo = new Label("TABLA HASH"); titulo.setBounds(180,20,400,50); Font ff = new Font( "Tahoma", 1 ,18 ); titulo.setFont( ff );

Upload: ionijohn

Post on 11-Apr-2015

5.922 views

Category:

Documents


1 download

DESCRIPTION

Ejemplo de una lista ligada

TRANSCRIPT

Page 1: Lista Ligada

Lista Ligada

import java.awt.*;

import java.net.*;

import java.io.*;

import java.awt.event.*;

import java.util.*;

class Tabla extends Frame {

Panel panel;

TextField textver,textinser,textbus;

TextArea textimpri;

Button mostrar, buscar, insertar, cierra;

Label lab1, lab2, titulo;

public static final int size_hash = 5;

LinkedList []Arreglo = new LinkedList[size_hash];

Tarea1 prueba = new Tarea1(Arreglo,size_hash);

public Tabla(String title) {

super (title);

Font f = new Font( "Tahoma", 0 , 13 );

titulo = new Label("TABLA HASH");

titulo.setBounds(180,20,400,50);

Font ff = new Font( "Tahoma", 1 ,18 );

titulo.setFont( ff );

add(titulo);

setFont( f );

setResizable(false); //no maximizar

Page 2: Lista Ligada

setBounds(150,100,500,450);

setLayout(null);

textver = new TextField(40);

textver.setBounds(60,170,400,25);//cuadro para ver comentarios

textinser = new TextField(40);

textinser.setBounds(180,90,130,25);//cuadro para escribir cadenas a insertar

textbus = new TextField(40);

textbus.setBounds(180,130,130,25);//cuadro para escribir cadenas a buscar

textimpri = new TextArea(20,40);

textimpri.setBounds(150,220,310,190); //area donde se imprime la tabla

textver.setText("Introduzca una cadena arriba y haga click en el boton insertar ");

textimpri.setEditable(false); //no se puede escribir

textver.setEditable(false); //no se puede escribir

textinser.setEditable(true);

textbus.setEditable(true);

Page 3: Lista Ligada

insertar = new Button("Insertar"); //x, y, largo , ancho

insertar.setBounds(330,90,100,20);

buscar = new Button("Buscar");

buscar.setBounds(330,130,100,20);

mostrar = new Button("Mostrar_Tabla");

mostrar.setBounds(55,240,90,25);

cierra = new Button("Cerrar");

cierra.setBounds(55,300,90,25);

mostrar.setEnabled(false); //desabiliter

buscar.setEnabled(false);

cierra.setEnabled(true);

lab1 = new Label("Busca Cadena: ");

lab2 = new Label("Dar una Cadena: ");

lab1.setBounds(60,130,110,20);

lab2.setBounds(60,90,110,20);

add(lab1);

add(lab2);

add(textver);

add(textimpri);

add(textinser);

Page 4: Lista Ligada

add(textbus);

add(insertar);

add(buscar);

add(mostrar);

add(cierra);

mostrar.addActionListener(new accion());

buscar.addActionListener(new accion());

insertar.addActionListener(new accion());

cierra.addActionListener(new accion());

addWindowListener(new Cerrar());

setVisible(true);

}

/////////////////////////////////////////////////////////////////////

// clase que controla los eventos sobre el boton

class accion implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

String com = e.getActionCommand();

Page 5: Lista Ligada

if (com.equals("Insertar"))

{

prueba.Insertar_Nodos(Arreglo);

textinser.setText("");

buscar.setEnabled(true);

mostrar.setEnabled(true);

}

if( com.equals("Buscar") )

{

prueba.Buscar(Arreglo);

textbus.setText("");

}

if(com.equals("Mostrar_Tabla") )

{

prueba.Mostrar(Arreglo);

}

if(com.equals("Cerrar") )

{

System.exit(0);

}

Page 6: Lista Ligada

}

}

///////////////////////////////////////////////////////////////////////

public class Tarea1{

int size;

LinkedList arreglo[];

public Tarea1(LinkedList Arreglo[], int tam)

{

size= tam;

int i;

for (i=0; i<tam; i++)

{

Arreglo[i] = new LinkedList();

Nodo indice= new Nodo(i);

Insertar(indice,Arreglo[i]);

}

}

public Nodo Crea_Nodo(String cade, int posicion)

{

Nodo nuevo = new Nodo(cade,posicion);

return nuevo;

}

Page 7: Lista Ligada

public void Insertar(Nodo x, LinkedList lista)

{

lista.addLast(x);

}

public void Eliminar(int x, LinkedList lista)

{

lista.remove(x);

}

public boolean Buscar_Copia(Nodo dato, LinkedList lista){

int i=0;

boolean bandera=false;

Nodo obj;

if (lista.size() == 1){

bandera=false;

}

else{

while (i < lista.size()){

obj= (Nodo)lista.get(i);

Page 8: Lista Ligada

if ((obj.Obtener_Cadena()).equals(dato.Obtener_Cadena())==false){

bandera=false;

i++;

}

else{

bandera=true;

break;

}

}

}

return bandera;

}

public int hash (String key)

{

Page 9: Lista Ligada

int hashVal = 0;

for (int i = 0; i < key.length(); i++){

hashVal += key.charAt(i);

// System.out.println("Operacion es ="+hashVal);

}

return hashVal % size;

}

public void Insertar_Nodos(LinkedList Arreglo [])

{

String res;

int clave;

String palabra;

Nodo aux;

boolean verificar;

textver.setText("Introduce una cadena de caracteres");

palabra=textinser.getText();

clave=hash(palabra);

aux=Crea_Nodo(palabra,clave);

verificar=Buscar_Copia(aux,Arreglo[clave]);

Page 10: Lista Ligada

if(verificar==false)

{

Insertar(aux,Arreglo[clave]);

textver.setText("El nodo con la cadena '"+aux.Obtener_Cadena()+"' fue insertado en el indice "+aux.Obtener_Posicion());

}

else

textver.setText("*****El elemento '"+aux.Obtener_Cadena()+"' ya existe, prueba con otra cadena*****");

System.out.print(verificar);

System.out.println(clave);

}

public void Buscar(LinkedList Arreglo[])

{

int i=1;

String res;

int clave;

String palabra;

Nodo aux;

boolean verificar;

Page 11: Lista Ligada

textver.setText("Introduce la cadena a buscar");

palabra=textbus.getText();

clave=hash(palabra);

aux=Crea_Nodo(palabra,clave);

verificar=Buscar_Copia(aux,Arreglo[clave]);

if(verificar==false)

textver.setText("------El elemento '"+aux.Obtener_Cadena()+"' no se encuentra dentro de la tabla hash------");

else

textver.setText("El Elemento "+ "'"+palabra + "'"+" se encuentra en la posicion "+clave+" de la tabla hash");

}

public void MostrarLista(LinkedList Pila)

{

int i=1,j=0;

int tam=Pila.size();

Nodo obj;

textimpri.append("\n");

obj= (Nodo)Pila.get(j);

Page 12: Lista Ligada

textimpri.append(obj.Obtener_Posicion()+ " --> " );

while (i<tam){

obj= (Nodo)Pila.get(i);

textimpri.append(obj.Obtener_Cadena()+ " --> ");

i++;

}

}

public void Mostrar(LinkedList Arreglo[])

{

int i;

textimpri.append("\n\n\nLa tabla hash es: ");

for (i=0; i<size_hash; i++)

MostrarLista(Arreglo[i]);

}

}

class Cerrar extends WindowAdapter

{

public void windowClosing(WindowEvent e)

{

dispose();

Page 13: Lista Ligada

System.exit(0);

}

}

/////////////////////////////////////////////////////////////////

public static void main(String [] args) {

new Tabla("Metodo de Hash");

}

}

La clase nodo

import java.io.*;

public class Nodo{

String dato;

int posicion;

Nodo siguiente;

public Nodo(){}

Page 14: Lista Ligada

public Nodo(int posicion){

siguiente=null;

this.dato=" ";

this.posicion=posicion;

}

public Nodo (String dato, int posicion)

{

siguiente=null;

this.dato=dato;

this.posicion=posicion;

}

public Nodo(String dato,int posicion, Nodo sigue)

{

this.dato=dato;

this.posicion=posicion;

this.siguiente=sigue;

}

public String Obtener_Cadena()

{

return dato;

}

public int Obtener_Posicion()

Page 15: Lista Ligada

{

return posicion;

}

}

Ejemplo del programa