inserting an element in an array deleting an element from an array merging two arrays passing arrays to functions passing individual elements passing the entire array pointers and arrays arrays of pointers two-dimensional arrays declaring two-dimensional arrays initializing two-dimensional arrays accessing the elements of two-dimensional arrays operations on two-dimensional arrays passing two-dimensional arrays to functions pointers and two-dimensional arrays multi-dimensional arrays pointers and three-dimensional arrays sparse matrices applications of arrays strings introduction reading strings writing strings operations on strings arrays of strings pointers and strings structures and unions introduction structure declaration typedef declarations initialization of structures accessing the members of structure copying and comparing structures nested structures arrays of structures structures and functions passing individual members passing the entire structure passing structures through pointers self-referential structures unions declaring union accessing member of union initializing unions arrays of union variables unions inside structures linked lists introduction basic terminologies linked lists versus arrays memory allocation and de-allocation for linked list singly linked lists traversing linked list searching for value in linked list inserting new node in linked list deleting node from linked list circular linked lists inserting new node in circular linked list deleting node from circular linked list doubly linked lists inserting new node in doubly linked list