The most important thing for solving linked list problems is to figure out how pointers move during addition, insertion, deletion and reverse. Make sure the solution covered all possible cases before start coding.
Linked list is not a common interview question for big companies as this topic lack of follow up questions. However, there are many questions require to use linked list together with other data structure, e.g. LRU. There are some common techniques to solve linked list problems:
Dummy node: Sometimes we create a dummy node which points to the head/tail node. In this case, we do not need to handle head node as a special case in the algorithm. Specially, in double linked list, we create a dummy head node and a dummy tail node to avoid complicate corner cases.
Fast & Slow pointers: It can be used to find the middle node of a linked list or whether a linked list has a cycle. We need to define two pointers, the fast pointer moves 2 steps at once and the slow pointer moves 1 step at once.
Leetcode 141. Linked List Cycle
Leetcode 142. Linked List Cycle II
Leetcode 234. Palindrome Linked List
Leetcode 369. Plus One Linked List
Leetcode 445. Add Two Numbers II
Leetcode 21. Merge Two Sorted Lists
Leetcode 328. Odd Even Linked List
Leetcode 86. Partition List
Lettcode 24. Swap Nodes in Pairs