Функция записи из структуры в массив - 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;
}

Объяснение кода листинга программы

В данном коде реализована функция подсчёта длины односвязного списка. Алгоритм работает следующим образом:

  1. Инициализируем счётчик элементов списка i равным 0.
  2. Задаём начальный элемент списка в качестве текущего.
  3. Пока текущий элемент не равен NULL, то: — Увеличиваем счётчик на единицу. — Делаем next текущего элемента новым текущим элементом.
  4. Выводим значение счётчика на экран.
  5. Возвращаем значение счётчика в качестве результата работы функции.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы