Ошибка conflicting types - C (СИ)
Формулировка задачи:
Из-за чего и как ее исправить?
#include <stdbool.h> #include <stdio.h> #include "bst.h" void PKL(BstNode **node, const int level); int main(void) { int i, maxBFS; char cmd[255], arg; BstNode *root = NULL; do { printf("Введите команду (h - справка):\n"); scanf("%s", cmd); if (cmd[0] == '+') { scanf(" %c", &arg); if (arg >= 'A' && arg <= 'Z') { bstInsert(&root, arg); printf("Узел %c вставлен\n", arg); } else printf("Ошибка. Введена недопустимая буква\n"); } else if (cmd[0] == '-') { scanf(" %c", &arg); if (arg >= 'A' && arg <= 'Z') { if (bstRemove(&root, arg)) printf("Узел %c удален\n", arg); else printf("Узел %c не найден\n", arg); } else printf("Ошибка. Введена недопустимая буква\n"); } else if (cmd[0] == 'p') { PKL(&root, 0); } else if (cmd[0] == 't') { if (is_symmetric(&root)) { printf("YES"); } else { printf("NO"); } } else if (cmd[0] == 'h') { printf("================================\n"); printf("Список команд:\n"); printf("+ CHAR - вставить узел CHAR (A, B, ..., Z) в двоичное дерево\n"); printf("- CHAR - удалить узел CHAR из двоичного дерева\n"); printf("p - распечатать двоичное дерево\n"); printf("t - выполнить задание над двоичным деревом\n"); printf("q - завершить программу\n"); printf("================================\n"); } else if (cmd[0] != 'q') { printf("Неизвестная команда\n"); } } while (cmd[0] != 'q'); bstDestroy(&root); return 0; } void PKL(BstNode **node, const int level) { if (*node == NULL) { printf("Дерево пусто\n"); return; } if ((*node)->_right != NULL) PKL(&(*node)->_right, level + 1); printf("%*s%c\n", level * 2, "", (*node)->_key); if ((*node)->_left != NULL) PKL(&(*node)->_left, level + 1); } _Bool mirror_equals(BstNode *_left, BstNode *_right) { if( _left == NULL || _right == NULL ) {return _left == NULL && _right == NULL; return (_left->_key == _right->_key && mirror_equals(_left->_left, _right->_right) && mirror_equals(_left->_right, _right->_left) );} } _Bool is_symmetric(BstNode *node) { if( node == NULL|| mirror_equals(node->_left, node->_right)) {return true;} else {return false;} }
3.c:111:7: error: conflicting types for ‘is_symmetric’ _Bool is_symmetric(BstNode *node) ^ 3.c:53:8: note: previous implicit declaration of ‘is_symmetric’ was here if (is_symmetric(&root)) ^
Решение задачи: «Ошибка conflicting types»
textual
Листинг программы
_Bool mirror_equals(BstNode *_left, BstNode *_right); _Bool is_symmetric(BstNode *node);
Объяснение кода листинга программы
- В коде представлены две функции:
mirror_equals
иis_symmetric
. - Функция
mirror_equals
принимает два указателя на узлы бинарного дерева:_left
и_right
. - Функция
is_symmetric
принимает указатель на узел бинарного дереваnode
. - В обоих функциях используется тип данных
_Bool
, который может принимать значенияtrue
илиfalse
. - В функции
mirror_equals
сравниваются два узла бинарного дерева на равенство. - В функции
is_symmetric
проверяется симметричность бинарного дерева относительно оси. - В обоих функциях используется оператор
==
для сравнения узлов. - В обоих функциях используется оператор
&
для получения адреса узла. - В обоих функциях используется оператор
->
для доступа к полям узла. - В обоих функциях используется оператор
nullptr
для проверки на ноль. - В обоих функциях используется оператор
true
для возврата значенияtrue
при выполнении условия. - В обоих функциях используется оператор
false
для возврата значенияfalse
при невыполнении условия. - В обоих функциях используется ключевое слово
extern
для объявления функции. - В обоих функциях используется ключевое слово
void
для указания отсутствия возвращаемого значения. - В обоих функциях используется ключевое слово
const
для указания неизменяемости аргументов функции. - В обоих функциях используется ключевое слово
static
для объявления внутренней функции. - В обоих функциях используется оператор
return
для возврата значения из функции. - В обоих функциях используется оператор
if
для проверки условия. - В обоих функциях используется оператор
else
для указания альтернативного действия. - В обоих функциях используется оператор
NULL
для проверки на ноль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д