Skip to content

Latest commit

 

History

History
12 lines (12 loc) · 674 Bytes

queue.md

File metadata and controls

12 lines (12 loc) · 674 Bytes

如何实现一个queue

    1. 用什么数据结构来实现?
    1. 怎么有效
    1. 怎么扩展?
    • 3.1 一开始都没有想到有扩展的机制,如果发现queue已经满了,就会panic。真的事犯了一个大忌
    • 3.2 注意go的切片实现的时候扩展用append,重新申请一个切片在赋值回去,然后还有老的数据需要copy过来。 千万不要想着直接append原来的切片,很可能导致原来的内存还是要重新申请,而且go自己的申请是每次都是2倍的 扩展空间,肯可能浪费很多,,自己做可以一开始大一些,后面笑一些。
    1. 实现小细节,怎么方便的push和pop?
    • 3.2 一开始想着用push的位置和pop的位置来判断是否已经满了,后面突然行到直接用一个剩余量来判断 不是更方便吗?省去了各种情况的判断,而且push的位置和pop的位置修改也方便。
    • 3.3 注意垃圾回收