双向链表的结构:
1 | typedef struct list { |
特性如下:
- 双端链表有 prev 和 next 指针,获取某个节点的前置节点和后置节点的时间复杂度都是
O(1)
- 无环:表头节点的 prev 指针和表尾节点的 next 指针都指向 NULL,对链表的访问以 NULL 为终点
- 有表头指针和表尾指针:通过链表结构的 head 指针和 tail 指针,程序获取链表的表头节点和表尾节点的时间复杂度为
O(1)
- 有链表长度字段:程序使用链表结构的 len 字段记录链表节点数,获取节点数量的时间复杂度为
O(1)
- 多态性:链表节点使用 void* 指针来保存节点值,所以链表可以保存各种不同类型的值