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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct DoubleQueue {
  5.     struct DoubleQueue* ar;
  6.     struct DoubleQueue* al;
  7.     int data;
  8. }   queue;
  9.  
  10. int main() {
  11.     int x;
  12.     int n = 3;
  13.     queue b, e, al;
  14.     return 0;
  15. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы