Hash tables con liste di trabocco

di il
11 risposte

Hash tables con liste di trabocco

Sto preparando un esame, e mi incasino con le implementazione delle hash tables con liste di trabocco in linguaggio "C". Il prof ci ha vietato l'utilizzo degli "stack". Potreste per cortesia postare qualche esempio di codice base, molto elementare..
Grazie a tutti in anticipo.
Ciao a tutti.

11 Risposte

  • Re: Hash tables con liste di trabocco

    Ciao,visto che sei nuovo impiega 30 secondi del tuo tempo a leggere il regolamento del forum.

    Troverai scritto che non si forniscono esercizi da portare agli esami.
    Puoi invece confrontarti per imparare o risolvere degli errori su codice sorgente che hai scritto tu.

    Tutto chiaro?
  • Re: Hash tables con liste di trabocco

    Ok Grazie.
    Di seguito riporterò il codice che il mio Prof. mi ha vietato all'esame. Naturalmente farina del mio sacco ma lui non vuole gli steck.

    Questo è il codice:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    typedef struct elem
    {
    char valore[15];
    struct elem* next;
    } List;
    
    typedef List stack;
    //Dichiarazione e Identificazione HashTable :: typedef stack[20];
    
    int main()
    {
    
    stack* ht[20];
    //Hashtable ht; 
    //crea il vettore
    //Questo ciclo inizializza il vettore a null
    for(int i=0;i<sizeof(ht)/sizeof(stack*);i++) {
    ht[i] = (stack*)malloc(sizeof(stack));
    char s[20];
    sprintf(s, "Valore: %d\n", i);
    strcpy(ht[i]->valore, s);
    printf(ht[i]->valore);
    }
    
    stack* htPtr = &(*ht[0]);
    printf((htPtr++)->valore);
    
    system("pause");
    return 0;
    }
    
    Ciò che chiedo a questo punto è un consiglio da un programmatore sicuramente più esperto di me.
    Dovrei semplificarlo eliminando gli stack, ho un po' di confusione per via delle diverse cose che sto preparando per questo esame.
    Spero ora vada bene. Scusatemi ancora per non aver letto le regole ed essermi precipato. Sorry
  • Re: Hash tables con liste di trabocco

    Nessuno puó darmi un consiglio per come migliorare quel codice?
  • Re: Hash tables con liste di trabocco

    Ma esattamente il testo dell'esercizio qual è ?
  • Re: Hash tables con liste di trabocco

    Questo è l'esercizio: scrivere un programma che legga da tastiera una sequenza di n interi distin-
    ti e li inserisca in una tabella hash di dimensione 2n posizioni utilizzando
    liste monodirezionali per risolvere eventuali con?itti.
    Utilizzare la funzione hash h(x)=((ax + b)%p)%2n dove p `e
    il numero primo 999149 e a e b sono interi positivi minori di 10.000 scelti
    casualmente.
    Una volta inseriti tutti gli interi, il programma deve stampare la lun-
    ghezza massima delle liste e il numero totale di con?itti.
    Prima di scrivere il programma chiedersi perch´e la tabella ha dimensione
    2n e non n.
  • Re: Hash tables con liste di trabocco

    1)Inizia col scrivere la funzione di hash.
    2)Crea una struttura che implementi la lista semplice
    3)Crea tutte le funzioni necessarie a lavorare con la lista semplice
    4)Dichiara un vettore 2n di strutture liste semplice

    PSEUDO CODE:

    ELEMENTO:
    Dato
    Next

    (ELEMENTO) TblHash[2n]

    Hash(out intHashVal, inp Dato, inp A, int B, inp N)
    Element_New(out NewElement, inp Dato)
    Element_Add(inp NewElement, inp tblHash[], inp HashVal)
    Element_Remove(inp Element, inp tblHash[], inp HashVal)

    Avrai quindi:

    Element_Add( Element_New( Numero ) , tblHash, Hash(Numero, A, B, N) )

    Andrà a finire in:

    tblHash[Hash(Numero,A,B,N)].Dato == Numero.
  • Re: Hash tables con liste di trabocco

    Grazie mille vbextreme ..
    Ma la citazione fa parte della risposta?
    Cercherò di implementare il codice seguendo i tuoi suggerimenti..
  • Re: Hash tables con liste di trabocco

    Ciao vbextreme,
    TI ringrazio per il post molto utile.
    Vorrei solo che, se fosse possibile e poco problematico, mi postassi un codice di esempio pratico sul quale confrontare i miei progressi, come se fosse una linea guida, anche magari che rispecchi l'esercizio in base al quale mi hai dato quei preziosi consigli.
    In ogni caso Grazie.
  • Re: Hash tables con liste di trabocco

    Inizia a postare tu il codice,poi al massimo ti aiuto a correggerlo.
    E per favore togli quel lei che è assonante in un forum ancor piu nei miei confronti!
  • Re: Hash tables con liste di trabocco

    Questo è il Codice ma non va
    
    void checkAvg(int avg, struct list* head_node){ 
    struct list* prev; 
    struct list* curr; 
    struct list* next; 
    prev = head; 
    curr = prev->link; 
    next = curr->link; 
    while (curr!=NULL) { 
    if (prev->data <= avg) 
    { 
    head = curr; 
    } 
    if (curr->data <= avg) 
    { 
    prev->link = curr->link; 
    } 
    if (next->data <= avg) 
    { 
    curr->link = next->link; 
    } 
    prev = prev->link; 
    curr = curr->link; 
    next = next->link; 
    } 
    }
    
  • Re: Hash tables con liste di trabocco

    Segui la mia scaletta passo dopo passo,posta le varie funzioni della scaletta, il codice postato è una cosa buttata li . e basta .
Devi accedere o registrarti per scrivere nel forum
11 risposte