Как создать структуру, где будут поля с указателями на эту же структуру? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <stdlib.h>
 
typedef
        struct DoubleQueue
        {
            queue* ar;
            queue* al;
            int data;
        } queue;
 
int main()
    {
        int x;
        int n = 3;
        queue b,e,al;
    }
1>------ Построение начато: проект: Queue, Конфигурация: Debug Win32 ------
1>  Main.c
1>c:\users\life\documents\visual studio 2012\projects\praktika\praktika\main.c(7): error C2016: В языке C необходимо, чтобы в struct или union был по крайней мере один элемент
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(7): error C2061: синтаксическая ошибка: идентификатор "queue"
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(8): error C2143: синтаксическая ошибка: отсутствие "{" перед "*"
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(10): error C2059: синтаксическая ошибка: }
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(16): error C2065: queue: необъявленный идентификатор
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(16): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "b"
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(16): error C2065: b: необъявленный идентификатор
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(16): error C2065: e: необъявленный идентификатор
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Как создать структуру, где будут поля с указателями на эту же структуру? Пробовал без typedef, через имя структуры - безрезультатно.

Решение задачи: «Как создать структуру, где будут поля с указателями на эту же структуру?»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
typedef struct DoubleQueue {
    struct DoubleQueue* ar;
    struct DoubleQueue* al;
    int data;
}   queue;
 
int main() {
    int x;
    int n = 3;
    queue b, e, al;
    return 0;
}

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

  1. #include — подключает файл стандартного ввода/вывода, что позволяет использовать функции для работы с консолью
  2. #include — подключает файл стандартной библиотеки, который содержит функции для работы с памятью
  3. typedef struct DoubleQueue { — определяет новый тип данных DoubleQueue, который будет использоваться для создания структур
  4. *struct DoubleQueue ar;* — объявляет поле структуры ar типа `struct DoubleQueue, которое будет содержать указатель на структуруDoubleQueue`
  5. *struct DoubleQueue al;* — объявляет поле структуры al типа `struct DoubleQueue, которое будет содержать указатель на структуруDoubleQueue`
  6. int data; — объявляет поле структуры data типа int, которое будет содержать целочисленное значение
  7. } queue; — завершает определение структуры DoubleQueue
  8. int main() { — определяет функцию main, которая является точкой входа в программу
  9. int x; — объявляет переменную x типа int
  10. int n = 3; — объявляет переменную n типа int и инициализирует её значением 3
  11. queue b, e, al; — объявляет три переменные типа queueb, e и al
  12. return 0; — завершает функцию main и указывает, что программа успешно завершилась

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

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