链表节点如下
struct ListNode
{
struct ListNode
* prev
;
struct ListNode
* next
;
void * value
;
}ListNode
struct List
{
ListNode
* head
;
ListNode
* tail
;
unsigned long len
;
void *(*dup
)(void *ptr
);
void *(*free
)(void *ptr
);
void (*match
)(void *ptr
,void *key
);
}List
List和ListNode组成的结构如下 特性如下:
双端:获取前置节点和后置节点的时间复杂度为O(1)无环:判断结尾好判断带表头指针和表尾指针带链表长度计数器多态:可以保存不同类型的值