单链表的缺陷
在各个单链表中都有各自不同的缺陷:
- 在尾部插入或删除数据时间复杂度为O(N),效率低下;
- 在pos位置前插入、删除数据时间复杂度为O(N),效率低;
- 进行插入或删除数据时,可能会改变头节点,所以需要用到二级指针,比较麻烦。
那么有没有比较完美的链表呢?
当然有→带头+双向+循环链表,完美解决单链表不同缺陷。
带头双向循环链表
带头双向循环链表指的是:具有哨兵位头结点、每个节点中都存储了后一个节点和前一个节点的地址、头结点存储了尾结点的地址、尾结点存储了头结点地址,这样的一种结构的链表。
虽然它的结构看起来复杂,但是在链表中却是最简单效率最高的一种。
带头双向循环链表的实现
1.节点结构
比较单链表而言,带头双向循环链表多出一个prev指针,指向前一个节点。<