Хеш-таблицы не отслеживают порядок вставленных вами вещей.
Однако вы можете довольно легко расширить свою реализацию, чтобы отслеживать это.Поскольку вы используете связанные списки для создания цепочек, вы можете хранить массив указателей на узлы, и каждый раз, когда вы добавляете элемент в хеш-таблицу, добавляйте указатель на этот узел в конец массива.
Примерно так (хотя, очевидно, это зависит от вашей точной реализации):
struct HT {
size_t count, capacity;
void **elements; // just an example of a possible implementation.
LL **order; // keep track of insertion order here.
}
order
в этом случае следует хранить указатель на элемент в одном из связанных списков.Итерация по этому массиву даст вам элементы в том порядке, в котором они были вставлены.Просто убедитесь, что вы обновляете order
всякий раз, когда добавляете или удаляете элемент.