The document describes different algorithms for performing kinetic Monte Carlo simulations of epitaxial crystal growth processes. It introduces linear search, standard inverted list, minimal allocation, and flexible allocation algorithms. The flexible allocation algorithm synthesizes aspects of the standard and minimal allocation approaches to provide memory efficient simulations while maintaining low computational cost per iteration. Performance comparisons on test systems show the flexible approach performs well even for large system sizes.