Merge pull request #1391 from rbshealy/master

Add nested linked list and node class to HashMap.java
This commit is contained in:
Stepfen Shawn 2020-08-07 09:00:12 +08:00 committed by GitHub
commit 4be90d8afa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,6 @@
package DataStructures.HashMap.Hashing;
class HashMap {
public class HashMap {
private int hsize;
private LinkedList[] buckets;
@ -36,8 +35,114 @@ class HashMap {
public void displayHashtable() {
for (int i = 0; i < hsize; i++) {
System.out.printf("Bucket %d :", i);
buckets[i].display();
System.out.println(buckets[i].display());
}
}
}
public static class LinkedList {
private Node first;
public LinkedList() {
first = null;
}
public void insert(int key){
if(isEmpty()) {
first = new Node(key);
return;
}
Node temp = findEnd(first);
temp.setNext(new Node(key));
}
private Node findEnd(Node n) {
if(n.getNext() == null) {
return n;
} else {
return findEnd(n.getNext());
}
}
public Node findKey(int key) {
if(!isEmpty()) {
return findKey(first, key);
} else {
System.out.println("List is empty");
return null;
}
}
private Node findKey(Node n, int key) {
if(n.getKey() == key) {
return n;
} else if(n.getNext() == null) {
System.out.println("Key not found");
return null;
} else {
return findKey(n.getNext(),key);
}
}
public void delete(int key) {
if(!isEmpty()) {
if(first.getKey() == key) {
first = null;
} else {
delete(first,key);
}
} else {
System.out.println("List is empty");
}
}
private void delete(Node n, int key) {
if(n.getNext().getKey() == key) {
if(n.getNext().getNext() == null) {
n.setNext(null);
} else {
n.setNext(n.getNext().getNext());
}
}
}
public String display() {
return display(first);
}
private String display(Node n) {
if(n == null) {
return "null";
} else {
return n.getKey() + "->" + display(n.getNext());
}
}
public boolean isEmpty() {
return first == null;
}
}
public static class Node {
private Node next;
private int key;
public Node(int key) {
next = null;
this.key = key;
}
public Node getNext() {
return next;
}
public int getKey() {
return key;
}
public void setNext(Node next) {
this.next = next;
}
}
}