Let P be a singly linked list. Let Q be the pointer to an intermediate node X in the list. What is the worst case time complexity of the best known algorithm to delete node X from the list?
A) O(n)
B) O(log ^{2 }n)
C) O(log n)
D) O(1)