This question is pretty vague. The whole reason we have multiple data structures is that they all support different access patterns more or less efficiently than others. For example:
- A linked list is a good choice if all access is from the start of the list forward.
- A dynamic array is a good choice if the accesses are random and insertion/deletion is at the end.
- A stack is a good choice if the accesses are always FIFO.
- A queue is a good choice if the accesses are always LIFO.
- A deque is a good choice if accesses are always at the ends.
- A priority queue is a good choice if the accesses are always to the smallest element.
- A hash table is good if accesses are totally random and no ordering is required.
- A balanced binary search tree is good if accesses are totally random and an ordering is required.
- A trie is good if the elements being stored are strings or otherwise digital.
- A kd-tree is good if the elements are points in space and you want to support range queries or nearest-neighbor searches.
- A union-find structure is good if you want to know how elements are connected to one another.
- A van Emde Boas tree is good if the values are integers, accesses are random, and you want them to be in order.
- A quadedge is good if you want to store the elements as a geometric structure and want to access points and edges near particular faces (or vice-versa)
- etc.
There are myriad good answers to this question depending on just what you're trying to do to the data. This list is only a small sampling of what data structures are out there, and all of them could be the right answer depending on the circumstance. They could also all be the wrong answer depending on the circumstances. Remember - when choosing a data structure, make sure you know what problem you're trying to solve!
As to your second question: in the worst case, it can take O(n) time to find an element in a linked list. This happens either when the element you are searching for is not present in the linked list or if it is near the end. In that case, you need to scan the entire linked list one element at a time before you can conclude whether or not the element in question is contained within the list.
Hope this helps!