List operations implementations for Lecture 5.1