Блоковый список, добавление элемента в начало массива
Результат программы - массив, состоящий из блоков. Блоки, размером 9, состоят из записей. Как будет выглядеть функция, добавляющая запись в начало массива? У меня что-то не получается. Её работа: сдвиг массива вниз на один и на его нулевом индексе вставить конкретную запись(её указывем в отдельной функции). При этом значение cnt (счётчик записей в блоке) в нашем блоке должно прибавиться на 1. Полный код программы, если он требуется: https://pastebin.com/kS8wf5Vm
#include <iostream>
#include <vector>
using namespace std;
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 blocklist_add_begin(blockList* l, record* r) //Нужно сдвинуть массив данных на одну позицию вниз -> на 0 индексе должна быть эта новая запись
{
//перемещаемся по списку с головы до хвоста
for (block* currentBlock = l->head; currentBlock; currentBlock = currentBlock->next)
{
currentBlock = l->head->next++; //перемещаем массив на 1 вниз
currentBlock->cells[currentBlock->cnt] = *r; //добавляем нашу запись
currentBlock->cnt++; //увеличиваем счётчик записей
}
}