Списки. Ошибка "недопустимый неполный тип" - C (СИ)
Формулировка задачи:
В 30-й строке ругается на второй Zv
Цель программы. Используя динамическую структуру список, подсчитать сумму отрицательных чисел в списке.
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <locale.h>
#include <cstdio>
#include <Windows.h>
typedef struct zv
{
int mas;
struct zv * next; // ссылка на следующий элемент списка
} Zv;
int main()
{
setlocale(LC_ALL, "Russian");
Zv * P; // первый элемент списка
Zv * t; //последний элемент списка
int sym;
int k = 0;
printf("Ведите строку целых чисел, закончив её нулём\n");
P = NULL;
do
{
scanf("%d", &sym);
t = (struct Zv *)malloc(sizeof(Zv));
t->next = P; P = t;
t->mas = sym;
} while (sym != 0);
t = P;
while (t != 0)
{
if (t->mas % 2 == 0)
{
k++;
}
t = t->next;
}
printf("Количество чисел: %d", k);
system("pause");
return 0;
}Решение задачи: «Списки. Ошибка "недопустимый неполный тип"»
textual
Листинг программы
t = (Zv*)malloc(sizeof(Zv)); // без struct
Объяснение кода листинга программы
- В коде выделяется память под переменную типа Zv с помощью функции malloc.
- Переменная t будет содержать указатель на выделенную память.
- В данном случае, структура Zv не объявлена, что может вызывать ошибку компиляции.
- Если структура Zv была объявлена до этого фрагмента кода, то ошибка
недопустимый неполный типможет указывать на неправильное заполнение поля структуры. - Если структура Zv не была объявлена, то ошибка
недопустимый неполный типуказывает на то, что компилятор не может определить размер структуры Zv, так как она не полностью определена. - Возможно, в коде пропущено объявление структуры Zv или ее полей.
- Возможно, в коде присутствует ошибка синтаксиса или другая ошибка, которая мешает компиляции.