Single linked list is more efficient in terms of storage as every node will store only one pointer, as opposed to doubly linked list which has to store two pointers(prev and next).
Insert Operations for both lists is Ο(1) for inserting at head .i.e first node and O(n) else where
Search: Single linked list takes O(n) as there is only one pointer and it cannot traverse in reverse direction. Doubly linked list takes O(n), however reverse traversal is possible here.
Delete : O(n) worst case time for Single LL
O(1) for double LL if pointer to the node to be deleted is given. Here Double LL is faster