Проблема со сдвигом массива структур
При реализации функции вставки в голову блочного списка у меня возникает некорректная работа функции insertToHead. Она правильно сдвигает массив, но не правильно сдвигает поле 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;
}
}
}
Буду благодарен, если вы укажете на мою ошибку в коде.