При этой стратегии файловое пространство не разделяется на области, но для каждой записи
добавляется 2 указателя: указатель на предыдущую запись в цепочке синонимов
и указатель на следующую запись в цепочке синонимов. Отсутствие соответствующей
ссылки обозначается специальным символом, например нулем. Для каждой новой записи
вычисляется значение хэш-функции, и если данный адрес свободен, то запись попадает
на заданное место и становится первой в цепочке синонимов. Если адрес, соответствующий
полученному значению хэш-функции,
занят, то по наличию ссылок определяется, является ли запись, расположенная
по указанному адресу, первой в цепочке синонимов. Если да, то новая запись располагается
на первом свободном месте и для нее устанавливаются соответствующие ссылки:
она становится второй в цепочке синонимов, на нее ссылается первая запись, а
она ссылается на следующую, если таковая есть. Если запись, которая занимает
требуемое место, не является первой записью в цепочке синонимов, значит, она
занимает данное место «незаконно» и при появлении «законного
владельца» должна быть «выселена», то есть перемещена на новое
место. Механизм перемещения аналогичен занесению новой записи, которая уже имеет
синоним, занесенный в файл. Для этой записи ищется первое свободное место и
корректируются соответствующие ссылки: в записи, которая является предыдущей
в цепочке синонимов для перемещаемой записи, заносится указатель на новое место
перемещаемой записи, указатели же в самой перемещаемой записи остаются прежние.
После перемещения
«незаконной» записи вновь вносимая запись занимает свое законное
место и становится первой записью в новой цепочке синонимов. Механизмы удаления
записей во многом аналогичны механизмам удаления в стратегии с областью переполнения.
Однако еще раз кратко опишем их. Если удаляемая запись является первой записью
в цепочке синонимов, то после удаления на ее место перемещается следующая (вторая)
запись из цепочки синонимов и проводится соответствующая корректировка указателя
третьей записи в цепочке синонимов, если таковая существует.
Если же удаляется запись, которая находится в середине цепочки синонимов, то производится только корректировка указателей: в предшествующей записи указатель на удаляемую запись заменяется указателем на следующую за удаляемой запись, а в записи, следующей за удаляемой, указатель на предыдущую запись заменяется на указатель на запись, предшествующую удаляемой.