Блочный список. Ошибка в функции поиска

Программа использует блоки для хранение массива данных. Функция поиска должна найти совпадающие ключи(т.е. ключ введенный пользователем и ключ из памяти) Проблема в том, что она находит только первый и последний элементы одного блока, в чём может быть проблема? Структуры:

const size_t blockSize = 9;

struct record //запись с данными
{
    float key; //ключ
    vector<int> intData; //должен быть массивом
    vector<char> charData; // должен быть массивом
    float floatData; //инфа
};

struct block //блок
{
    size_t      cnt;                //кол-во записей в блоке
    record      cells[blockSize];   //ячейки блока
    block* prev = nullptr;     //предыдущий элемент
    block* next = nullptr;     //следующий элемент
};

struct blockList //список
{
    block* head = nullptr;     //указатель на голову списка
    block* tail = nullptr;     //указатель на хвост списка
};

Функция поиска:

void Search_record(blockList* l, record* r)
{
    for (block* currentBlock = l->head; currentBlock; currentBlock = currentBlock->next) // перемещаемся по блокам
    {
        //если значения ключей совпадают
        if (r->key == currentBlock->cells->key)
        {
            //выводим их инфу
            cout << "Results of searching: ";
            for (size_t i = 0; i < currentBlock->cells->intData.size(); i++)
            {
                cout << currentBlock->cells->intData[i] << " ";
            }
            for (size_t i = 0; i < currentBlock->cells->charData.size(); i++)
            {
                cout << currentBlock->cells->charData[i] << " ";
            }
            cout << currentBlock->cells->floatData << endl;
        }
    }
    return;
}

Ответы (0 шт):