Функция записи из структуры в массив - Error: void value not ignored as it ought to be - C (СИ)
Формулировка задачи:
И вроде бы все хорошо, да вот только с функцией toArray (функция из структуры записывает данные в массив) приходится попариться. Компилятор ругается следующим образом: error: void value not ignored as it ought to be
Впервые встречаю данную ошибку(похожие случаи на форуме не помоги разобраться) На всякий случай скинул весь код, хотя может быть и самой функции было бы достаточно. Люди добрые, помогите кто сможет, плиз.
#include<stdio.h> #include<stdlib.h> typedef struct Node { int value; struct Node *next; } Node; Node *head = NULL; void push(Node **head, int data) { Node *tmp = (Node*) malloc(sizeof(Node)); tmp->value = data; tmp->next = (*head); (*head) = tmp; } void fromArray(Node **head, int *arr, size_t size) { size_t i = size - 1; if (arr == NULL || size == 0) { return; } do { push(head, arr[i]); } while(i--!=0); } void printLinkedList(const Node *head) { while (head) { printf("%d ", head->value); head = head->next; } printf("\n"); } void find(Node *head, int val){ int i=0; while(head != NULL){ if(head->value == val){ i++; } head = head->next; } printf("It have been found %d times\n", i); } void length(Node *head){ int i=0; while(head != NULL){ i++; head = head->next; } printf("%d\n",i); } void add(Node **head, int val){ Node *tmp = (Node*)malloc(sizeof(Node)); tmp->value = val; tmp->next = (*head); (*head) = tmp; } int *toArray(Node *head){ int i=0; int leng = length(head); int *values = (int*)malloc(leng*sizeof(int)); while(head != NULL){ for(i=0; i<leng; i++){ values[i] = head->value; head = head->next; } } return values; } int main(){ Node *head = NULL; int arr[] = {7, 9, 1 ,9, 4, 9}; fromArray(&head, arr, 6); printLinkedList(head); length(head); find(head, 9); add(&head, 6); length(head); printLinkedList(head); return 0; }
Решение задачи: «Функция записи из структуры в массив - Error: void value not ignored as it ought to be»
textual
Листинг программы
int length(Node* head) { int i = 0; while (head != NULL) { i++; head = head->next; } printf("%d\n", i); return i; }
Объяснение кода листинга программы
В данном коде реализована функция подсчёта длины односвязного списка. Алгоритм работает следующим образом:
- Инициализируем счётчик элементов списка
i
равным 0. - Задаём начальный элемент списка в качестве текущего.
- Пока текущий элемент не равен
NULL
, то: — Увеличиваем счётчик на единицу. — Делаемnext
текущего элемента новым текущим элементом. - Выводим значение счётчика на экран.
- Возвращаем значение счётчика в качестве результата работы функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д