Hashing

//Author:Shawn
//Email:stepfencurryxiao@gmail.com

class Node {
  int data;
  Node next;

  Node(int data) {
    this.data = data;
    this.next = null;
  }
}

class LinkedList {
  Node head;
  int size;

  LinkedList() {
    head = null;
    size = 0;
  }

  void insert(int data) {
    Node newnode = new Node(data);

    size++;

    if (head == null) {
      head = newnode;
    } else {
      newnode.next = head;
      head = newnode;
    }
  }

  void delete(int data) {
    if (size == 0) {
      print("underFlow!");
      return;
    } else {
      Node curr = head;
      if (curr.data == data) {
        head = curr.next;
        size--;
        return;
      } else {
        while (curr.next.next != null) {
          if (curr.next.data == data) {
            curr.next = curr.next.next;
            return;
          }
        }
        print("Key not found");
      }
    }
  }

  void display() {
    Node temp = head;
    while (temp != null) {
      print(temp.data.toString());
      temp = temp.next;
    }
    print("\n");
  }
}

class HashMap {
  int hsize;
  List<LinkedList> buckets;

  HashMap(int hsize) {
    buckets = new List<LinkedList>(hsize);
    for (int i = 0; i < hsize; i++) {
      buckets[i] = new LinkedList();
    }
    this.hsize = hsize;
  }

  int hashing(int key) {
    int hash = key % hsize;
    if (hash < 0) {
      hash += hsize;
    }
    return hash;
  }

  void insertHash(int key) {
    int hash = hashing(key);
    buckets[hash].insert(key);
  }

  void deleteHash(int key) {
    int hash = hashing(key);
    buckets[hash].delete(key);
  }

  void displayHashtable() {
    for (int i = 0; i < hsize; i++) {
      print("Bucket $i:");
      buckets[i].display();
    }
  }
}

void main() {
  HashMap h = new HashMap(7);

  print("Add key 5");
  h.insertHash(5);

  print("Add key 28");
  h.insertHash(28);

  print("Add key 1");
  h.insertHash(1);

  print("Delete Key 28");
  h.deleteHash(28);

  print("Print Table:\n");
  h.displayHashtable();

  print("Delete Key 1");
  h.deleteHash(1);

  print("Print Table:\n");
  h.displayHashtable();
}
Algerlogo

Β© Alger 2022

About us

We are a group of programmers helping each other build new things, whether it be writing complex encryption programs, or simple ciphers. Our goal is to work together to document and model beautiful, helpful and interesting algorithms using code. We are an open-source community - anyone can contribute. We check each other's work, communicate and collaborate to solve problems. We strive to be welcoming, respectful, yet make sure that our code follows the latest programming guidelines.