双向链表:在单链表的每个结点里在增加一个指向其直接前驱的指针域,这样链表中就形成了有两个方向不同的链,故称为双向链表
双向循环链表结构:
双向链表插入操作:
考虑前后结点,前驱和后继,两头确认,考虑四步
算法描述:
双向链表删除操作:
考虑两步
算法步骤:
算法描述:
如果知道要删除的元素的位置,算法时间复杂度为O(1)
如果不知道,则需要查找位置,算法时间复杂度为O(n)
补充:顺序表和链表的比较:
双向链表:在单链表的每个结点里在增加一个指向其直接前驱的指针域,这样链表中就形成了有两个方向不同的链,故称为双向链表
双向循环链表结构:
双向链表插入操作:
考虑前后结点,前驱和后继,两头确认,考虑四步
算法描述:
双向链表删除操作:
考虑两步
算法步骤:
算法描述:
如果知道要删除的元素的位置,算法时间复杂度为O(1)
如果不知道,则需要查找位置,算法时间复杂度为O(n)
补充:顺序表和链表的比较: