I added print functions for each of the data structures to help me visualize the matching process as I tried to figure it out. I commented out my calls of these functions, so they shouldn't do anything at the moment, but theyre there if you'd like to use them