First of all, thank you for helping. I'm working on a university course project and we don't take memory fragmentation in consideration.

What I did that when I do insertion I check if count == 0.8 ht size, it works as it should. But, when I delete an element I made a reindexing function in case to return handled collision elements to their original indexes, even though while reindexing I firstly check if count == (ht size)/2, if yes, I create new array its size is the first prime number after count. I think it works good.