Hash table open addressing without dummy
I came up with and algorithm of moving the last non-Null element of the probe sequence to the place of the deleted element to make the probe sequence contiguous. But this would make it impossible to retrieve the moved element if its hash index value was greater than that of the removed element.
So is there any correct algorithm for this?

Yes. There is a &quot;shift deletion&quot; scheme, that is described, for example, in this answer.
BTW, in the state of the art open-addressing hash table implementations, SwissTable and F14 &quot;dummy&quot; elements rather than &quot;shift deletion&quot; are used, but insertion of &quot;dummy&quot; elements (or &quot;tombstone&quot; or &quot;deleted&quot;, as they are also called) is avoided very often in practice.