Deletes the first occurrence of a specified value from the list. Adjusts the head, tail, and next pointers accordingly.
The value to delete.
Inserts a new value at the end of the list. Updates the tail pointer and, if the list was empty, also sets the head.
The value to insert.
Searches for a value in the list.
The value to search for.
Class representing a singly linked list. This list structure allows insertion, search, retrieval by index, and deletion of values.