|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Apr 2006
Messaggi: 15
|
[JAVA] problemone:java e tabelle hash
salve a tutti,
mi servirebbe il vostro aiuto per risolvere questa esercitazione sul linguaggio java: Realizzare una classe Table per la gestione di una tabella (di dimensiona prefissata) ordinata di coppie <Key,Value>, che esporta i seguenti metodi : Table():costruttore che costruisce una tabella di dimensione standard, Table(int size): costruttore che costruisce una lista di dimensione size, ....e altre funz varie Note realizzative: La tabella è realizzata mediante una tecnica di hashing ad indirizzamento aperto in un vettore di dimensiona prefissata, allocato staticamente. Ipotizzata la chiave Key di tipo intero, si adoperi la funzione di hash a scansione lineare: h(Key,i) = ((key%size)+i)%size dove i è il tentativo effettuato. Inizialmente si invoca la funzione h(key,0); se la posizione è libera si inserisce l’elemento, altrimenti, si cerca la nuova posizione con h(key,1); ancora una volta se è libera si inserisce l’elemento altrimenti si invoca h(key,2), e così via. Ovviamente la tabella è piena se si giunge al tentativo size-1; ora quello che vi chiedo: ke tipo di vettore statico dovrei usare...mica dovrei usare una matrice? vi ringrazio anticipatamente per le vostre risposte |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Credo che il testo si riferisca ad un array di dimensione nota pari a "size" (dove size è pari al valore passato in costruzione o alla dimensione standard in caso di costruzione senza argomenti).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jul 2005
Messaggi: 291
|
Codice:
class Couple{ Integer key; Object value; } public class MyHashTable{ private Couple[] table; private int size; private static final int DEF_SIZE=100; public MyHashTable(int size){ this.size=size; this.table=new Couple[this.size]; } public MyHashTable(){ this(DEF_SIZE); } public boolean put(Integer key,Object value){ for (int i=0;i<this.table.length;i++){ int pos=calcolaHash(key,this.size,i); if (this.table[pos]==null){ Couple coup=new Couple(); coup.key=key; coup.value=value; this.table[pos]=coup; return true; } } return false; } private static int calcolaHash(Integer key,int size,int i){ return ((key.intValue()%size)+i)%size; } } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:13.