I am looking to put together a flowchart for determining which data structures are appropriate for a given problem. The list of data structures are : array, linked list (single/double), hash (maps, etc), trees (binary, N-way), and skip list.
The criteria for choosing a list (from my point of view) are: 1) bounded or unbounded 2) random or sequential access 3) main operation (read, write, insert, delete) 4) performance 5) ease of coding
For example, if I know an exact number of items, then generally I will use an array. They are easy to search (though not necessarily fast) and easy to maintain.
With large amounts of data, I prefer to go with a tree for the traversal times.
I would be interested in finding out others flowcharts for choosing data structures.