Você está na página 1de 15

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


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);
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);
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();


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);

}
}

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

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;

}
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);
if
((obj.Obtener_Cadena()).equals(dato.Obtener_Cadena())==false){

bandera=false;

i++;

else{

bandera=true;

break;

return bandera;

public int hash (String key)

{
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]);
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;
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);
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();
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(){}
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()


{

return posicion;

Ejemplo del programa