Simple
Most programming languages will have the concept of an array/list and a map/dict/object. Most also have a native set perhaps built from the map structure. It is often from these three that more advanced data types can be built.
Advanced
Heap / Priority Queue
https://en.wikipedia.org/wiki/Heap_(data_structure)
Graphs
Graphs have vertices/nodes and edges/lines which are often "weighted". One would associate an edge with two vertices to connect them. You can also track the to-from directionality resulting in directed graphs.
Graphs are open ended but can be constrained for various reasons. You can prevent loops/cycles, for example, and when combined with directionality, create a popular advanced data type, a directed acyclic graph.
Queues
Simple queues are essentially lists with additional semantics. For example, a FIFO (first-in-first-out) queue could be implemented as pushing and popping from the head of a list.
Queue semantics can also be more complicated. For example a priority-queue would allow you to put items in the queue along with a rank or sort function, which would allow the pop-semantics to prioritize automatically which item should next come off the queue.
Probabilistic Data Structures
These data types make trade offs in accuracy in favor of performance. For example a Bloom Filter is a data type that tells you something like set-membership, but trades the accuracy of true/false for the probabilistic answers of false/probably-true. This is convenient for extremely large sets, where a normal set data type would exceed the memory capacity of a system.