Exercise 2.6, added queue and stack data structures