此链表为双向链表(Doubly-Linked List),LinkedList的声明稍微奇葩了些, 主要是为那些频繁的反复的插入节点和删除节点的应用而优化。对于其他的情况,性能应该会低一些。

设计思路是:如果删除了一个节点, 并不会立即free掉此节点,而是扔到节点池(nodes pool)里,等到创建新的节点时, 直接拿出来用而不用开辟新的空间,从而避免频繁的malloc操作,节点池其实就是个单向链表 (尽管里面的节点都有next和prev指针,我们只使用next)。一个明显的副作用就是空间开销可能会大些, 因此节点池的大小需要设置的合理些。