Structures allow users to define their own data types that group together variables of different types under a single name. A structure is defined using the struct keyword followed by member variables enclosed in braces. Structure variables can then be declared and accessed using the member operator (.). Structures can contain other structures (nested structures), and pointers to structures allow structures to be passed to functions and dynamically allocated. Linked lists are a common data structure that use structures - each list node contains a struct with a data element and pointer to the next node, with the list connected via these pointers.