Implement a linked list data structure in Python.
It should support the following operations. Each operation should have a O(1) worst-case time complexity.
push_headshould add an element to the start of the list. It should return something that can be passed toremoveto remove that element in the future.pop_tailshould remove an element from the end of the list.removetakes a handle frompush_head, and removes that element from the list.
There are some tests in linked_list_test.py for your implementation - feel free to write more.