Блочный список. Ошибка в функции поиска
Программа использует блоки для хранение массива данных. Функция поиска должна найти совпадающие ключи(т.е. ключ введенный пользователем и ключ из памяти) Проблема в том, что она находит только первый и последний элементы одного блока, в чём может быть проблема? Структуры:
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;
}