Programming and Coding: Can you explain the differences between object-oriented and functional programming? Provide examples of when you might use each. Write a function to reverse a linked list. Can you discuss the time and space complexity of your solution?