Очередь(Добавление элементов)

45
12 июля 2018, 00:50

Нужно создать функцию, добавление элементов в очередь, выводится ошибка:"Выражение должно быть допустимым для изменение левосторонним значением" Моя функция, которую я пытался создать:

void add(int* integer) {
    current = new queue;
    current->value = integer;
    current->next = NULL;
    if (last == NULL) {
        head = current;
    }
    else {
        last->next = current;
        last = current;
    }
}

Структура очереди:

struct queue {
    int value[10];
    queue *next;
};
Answer 1

Вы выделили память в структуре под массив, и пытаетесь константный адрес перезаписать другим.

struct queue {
    int value[10]; // память уже выделена, при вызове new queue 
    queue *next;
};

Вам необходимо поставить вместо массива указатель в структуру, или копировать память в массив в структуре.

Так же вы можете перегрузить один из операторов присваивания/копирования, для того что бы при присваивании массива стурктуре, в структуру копировались данные.

Answer 2

В элементе очереди у вас хранится десять интов. Вы должны реализовать присваивание не плюсом, а копированием памяти.

#include <string.h>
void add(int * integers) {
memcpy( & current->value, integers, sizeof(int)*10);
READ ALSO
Ошибка сегментирования (С++)

Ошибка сегментирования (С++)

При запуске файла возникает ошибка сегментирования (стек памяти сброшен на диск)Читал, что это может быть из-за того, что происходит утечка...

16
Visual Studio и Makefile

Visual Studio и Makefile

Надо было тестово собрать один проект под VS для проверки совместимости кода, в общем все собирается, но выдает следующее:

22
Проблема с выводом c++ (sort, copy)

Проблема с выводом c++ (sort, copy)

Проблема с copyВ "Task 1" все работает, но в "Task 2" после выполнения sort выводит только название группы и ссылается на

25