struct Element{
Element() {}
int data = NULL;
struct Element* right, *left;
};
或
struct Element{
Element() {}
int data = NULL;
Element* right, *left;
};
我正在使用二叉树,并且正在查找一个示例。在示例中,
Element* right
是 struct Element* right
。它们之间有什么区别,哪一种更适合编写数据结构?
我是从这个网站查找的: https://www.geeksforgeeks.org/binary-tree-set-1-introduction/
在 C 中,
struct
关键字必须使用来声明结构变量,但在 C++ 中它是可选(在大多数情况下)。
考虑以下示例:
struct Foo
{
int data;
Foo* temp; // Error in C, struct must be there. Works in C++
};
int main()
{
Foo a; // Error in C, struct must be there. Works in C++
return 0;
}
示例2
struct Foo
{
int data;
struct Foo* temp; // Works in both C and C++
};
int main()
{
struct Foo a; // Works in both C and C++
return 0;
}
在上面的示例中,
temp
是一个数据成员,它是指向非常量Foo
的指针。
此外,我建议使用一些优秀的 C++ 书籍来学习 C++。
在 C++ 中,定义类也会定义具有相同名称的类型,因此使用
struct Element
或仅使用 Element
表示相同的事情。
// The typedef below is not needed in C++ but in C to not have to use "struct Element":
typedef struct Element Element;
struct Element {
Element* prev;
Element* next;
};
您很少需要在 C++ 中使用
struct Element
(定义中除外)。
但是,在一种情况下您确实需要它,那就是当您需要消除同名类型和函数之间的歧义时:
struct Element {};
void Element() {}
int main() {
Element x; // error, "struct Element" needed
}