How would you implement a singly linked list from scratch, including functions for node insertion, deletion, and traversal?