A C++ struct is exactly like a class, except that where the members of a class are by default private, the members of a struct are by default public.

Structs are useful when one class (like a List) needs to store objects with multiple members (like a Node). By declaring the struct in the private section of the class, its implementation details are kept hidden from users of the class; however because it is a struct, the members of the class have unrestricted access to the struct's members.

A C++ struct can have constructors, destructors, methods, operators, ... just like a class.

(FYI: In C++'s parent language C, there are no classes, constructors, destructors, or methods; so a C struct can only contain instance variables / data members.)