В этом объявлении typedef
typedef struct Element{
int value;
double key1;
double key2;
struct NODE* next;
struct NODE* sort1;
struct NODE* sort2;
}Node;
Вы объявили две разные структуры. Первый имеет тип struct Element
с псевдонимом типа Node, и в его определении вы объявили тип struct NODE
.
Даже если не было опечатки, а члены данных вместо этого имеют тип struct Node *
из struct NODE *
тем не менее типы struct Node
и Node
не являются одинаковыми типами.
Вы должны объявить структуру как
typedef struct Element{
int value;
double key1;
double key2;
struct Element* next;
struct Element* sort1;
struct Element* sort2;
}Node;