the parameter of traverse has been modified to a pointer to listname, since it may need to be changed; save and predecessor are now parameters of initialize, process, and finalize

traverse(plistname)