Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Small code errors for the LinkedList and HashTable data structures #1033

Open
AlexIoanGheorghita opened this issue Apr 20, 2023 · 3 comments · May be fixed by #1037
Open

Small code errors for the LinkedList and HashTable data structures #1033

AlexIoanGheorghita opened this issue Apr 20, 2023 · 3 comments · May be fixed by #1037

Comments

@AlexIoanGheorghita
Copy link

Hello!

As I went through the code for these data structures, I noticed two small errors:

  1. inside the delete() method of the LinkedList data structure, there is a line of code that says: while (this.head && this.compare.equal(this.head.value, value)). However, instead of a while it should be an if statement.

  2. inside the constructor() of the HashTable data structure, we initialize an array in the following way: this.buckets = Array(hashTableSize).fill(null).map(() => new LinkedList());. However, the Array() constructor should have the new keyword in front of it.

If you guys feel that these are important fixes to you and if you allow me to help, I would be more than glad to contribute by creating a pull request with the changes made.

@mithleshgupta
Copy link

I can do this , can you assign this to me

@Saminakalwar
Copy link

Saminakalwar commented Jun 28, 2023

Hello ..Its SSOC Contributor .I can easily do this .
.Can u assign me issue under SSOC'23 label please ?

@sujitmahapatra
Copy link

For the LinkedList data structure, you're correct that the while statement should be replaced with an if statement. Here's the corrected delete method:

delete(value) {
    if (!this.head) {
        return;
    }

    if (this.compare.equal(this.head.value, value)) {
        this.head = this.head.next;
        return;
    }

    let current = this.head;
    while (current.next) {
        if (this.compare.equal(current.next.value, value)) {
            current.next = current.next.next;
            return;
        }
        current = current.next;
    }
}

For the HashTable data structure, you're correct that the Array() constructor should have the new keyword. Here's the corrected constructor:

constructor(hashTableSize) {
    this.buckets = new Array(hashTableSize).fill(null).map(() => new LinkedList());
    this.keys = {};
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants