Проблема со сдвигом массива структур

При реализации функции вставки в голову блочного списка у меня возникает некорректная работа функции insertToHead. Она правильно сдвигает массив, но не правильно сдвигает поле char, в результате получается ситуация как на скрине.неправильный перенос поля char. ~

struct Data
{
    char ch;
    int arr[10];
};

struct Node
{
    Data data[BLOCK_SIZE];
    Node* next = 0;
    Node*  prev = 0;
    int count = 0;
};

struct List
{
    Node* head = 0;
    Node* tail = 0;
};

void insertToHead(List* list, Data data) {
    if (list->head == 0) {
        Node* tmp = new Node;
        tmp->next = 0;
        tmp->tail = 0;
        tmp->count = 1;
        tmp->data[0] = data;
        list->head = tmp;
        list->tail = tmp;
    }
    else {
        if (list->head->count < BLOCK_SIZE) {
            for (int i = list->head->count; i > 0; --i) {
                list->head->data[i] = list->head->data[i - 1];
            }
            list->head->data[0] = data;
            list->head->count++;
        }
        else {
            Node* tmp = new Node;
            tmp->next = 0;
            tmp->tail = 0;
            tmp->count = 1;
            tmp->data[0] = data;
            tmp->next = list->head;
            list->head = tmp;
        }
    }
}

Буду благодарен, если вы укажете на мою ошибку в коде.


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