Hash Table with Struct

Kategori: C , 04 Temmuz 2019 , JanFranco


Bir önceki yazımızda hash table implemente etmiştik. Bu sefer tek bir değer değil, structları depolayacağız:


#include <stdio.h>
#include <stdlib.h>
#define SIZE 10

struct element{
    int key;
    int value;
};

struct element *hashTable[SIZE];

int hash(int key){
    return key % SIZE;
}

void insert(int key, int value){
    struct element *iElement = malloc(sizeof(struct element));
    iElement->key = key;
    iElement->value = value;

    int index = hash(key);

    while(hashTable[index] != NULL && hashTable[index]->key != -1){
        index = hash(index + 1);
    }

    hashTable[index] = iElement;
}

struct element *search(int key){
    int index = hash(key);

    while(hashTable[index] != NULL){
        if(hashTable[index]->key == key){
            return hashTable[index];
        }

        index = hash(index + 1);
    }

    return NULL;
};

struct element *del(struct element *item){
    int index = hash(item->key);

    while(hashTable[index] != NULL){
        if(hashTable[index]->key == item->key){
            struct element *dummy = malloc(sizeof(struct element));
            dummy->key = -1;
            dummy->value = -1;
            hashTable[index] = dummy;
            return dummy;
        }

        index = hash(index + 1);
    }

    return NULL;
};

void display(){
    int i;

    for(i=0; i<SIZE; i++){
        if(hashTable[i] != NULL){
            printf("KEY = %d || VALUE = %d\n", hashTable[i]->key, hashTable[i]->value);
        }
        else{
            printf("~~\n");
        }
    }
}

int main() {

    int i;
    for(i=0; i<SIZE; i++){
        insert(rand() % SIZE, rand() % SIZE);
    }
    display();
    printf("****************\n");
    struct element *searched;
    searched = search(6);
    del(searched);
    insert(100, 100);
    display();

    return 0;
}
Output>>

KEY = 0 || VALUE = 4
KEY = 1 || VALUE = 1
KEY = 2 || VALUE = 5
KEY = 6 || VALUE = 7
KEY = 4 || VALUE = 9
KEY = 4 || VALUE = 2
KEY = 5 || VALUE = 5
KEY = 7 || VALUE = 1
KEY = 8 || VALUE = 8
KEY = 7 || VALUE = 1
****************
KEY = 0 || VALUE = 4
KEY = 1 || VALUE = 1
KEY = 2 || VALUE = 5
KEY = 100 || VALUE = 100
KEY = 4 || VALUE = 9
KEY = 4 || VALUE = 2
KEY = 5 || VALUE = 5
KEY = 7 || VALUE = 1
KEY = 8 || VALUE = 8
KEY = 7 || VALUE = 1


Sonraki Yazı: Comparison of Sorting Algorithms
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın