ArrayQueue, LinkedQueue can run, but not perfect
update LinkedQueue