Блоковый список, добавление элемента в начало массива

Результат программы - массив, состоящий из блоков. Блоки, размером 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++; //увеличиваем счётчик записей
    }
}

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