That's a technique that is known as "linear search" and it is perhaps the simplest and least sophisticated method dealing with collisions and, not surprisingly, yields poor performance in comparison. But for many, many applications it is still "good enough" and is a clear winner compared to other non-hash-table-based approaches. The problem with linear search is that it tends to become a collision magnet because you get clumps of entries that are occupied and each collision anywhere in the clump makes the clump grow, thus increasing the likelihood that future entries will collide with some entry in the clump. So you usually progressively end up with a very non-random distribution of entries in the table. When you search, if you hit a clump, you are now reduced to the performance of a linear search across the clump. One advantage of linear search is that you will be able to insert and later find any entry right up until the table is completely filled, but the performance starts taking a real hit once the table load starts going much above a pretty small fraction, say 10% or so.I implemented a hash table for this purpose years ago and have used it scads of times. Mine handled collisions by inserting the new element at the next non-NULL location in the array (the index of which is derived from the hash function). If it happens a lot, use a larger array. Obviously this method requires a lot of memory. If you don't have memory, then I guess the binary tree. Alternatively, a binary search on a sorted list. Sort as part of the insertion or qsort after the fact. Lots of choices.
The next step up is some kind of systematic search from the collision point, with quadratic being the simplest. That spreads things out and reduces the clumps, but it does nothing to shorten the list of entries that have to be searched that actually collide with the sought entry. It also has the possibility of getting into a trap in which, for that hash value, the table appears full even when it might be nearly empty. One way of dealing with that is double hashing.
A step up beyond that is to put a data structure at each entry in the table that contains all of the items that collided. That eliminates the interaction between different hash values and makes it so that you aren't as concerned about keeping a low density in your hash table. In fact, you can still get significant benefits even if the hash table is considerably smaller than the number of ites stored in it (a loading factor in excess of 100%). If you have a loading factor of, say, 50% then a significant fraction of the entries will contain a single item and few of the others will contain more than two or three (assuming a good hash function). So even a linear search of those entries is a very small performance hit, plus inserting the entries in that list in a sorted fashion is also very tame.