> if ( current-> data == 2)
Try comparing with the value parameter.

Well you look at your diagrams, and that you have two pointers called prev and current.

Then you stare at this diagram.
Code:
prev     current
  |        |
  v        v
+---+    +---+    +---+    +---+    +---+    
| 5 |-+  | 4 | +->| 3 |--->| 2 |--->| 1 |--->NULL
+---+ |  +---+ |  +---+    +---+    +---+    
      +--------+
Then you consider the possibility of what
prev->next = current->next;
might do.