With a little more book keeping, we can avoid having to update a Node variable, p, one Node at a time from the start Node to get to a reference to the last Node.
In addition to start, maintain a Node variable last that is null if the list is empty and otherwise references the last data Node.
