 
                Structure is a user defined data type or Abstract Data Type (ADT). It is a collection of variables of different data types. When we declare a variable of a structure, it is creating all the variables together and we can use those variables via structure variable. To declare a structure we use the keyword “struct” .
A class is also a user define data type or Abstract Data Type (ADT). But we can declare member functions along with the member variables in a class. These class variables and functions may access by the objects of that class only. To declare a class we use the keyword “class”.
If a structure declares one or more pointers which point to the same type of structure in it. Then those types of structure known as Self Referential structures.