快捷搜索: 王者荣耀 脱发

双向链表示意图_图文详解双向链表原理

双向链表的主要优点是对于任意给的结点,都可以很轻易的获取其前结点和后结点,其主要缺点是每个结点需要保存next和prev两个属性,因此需要更多的空间开销,同时结点的插入与删除操作也将更加耗时,因为需要操作更多的指向操作。双向链表单个节点结构:

双向链表节点双向链表的数据结构:

双向链表数据结构

双向链表的插入操作插入数据到链表尾部

链表尾部插入数据插入数据到链表中间

链表中部插入数据

双向列表删除操作删除链表尾部数据

删除尾部数据删除链表中间数据

删除中间数据

循环双向列表设计

循环双向链表是在普通双向链表基础上进化得到的。在普通的双向链表中,如果我们要获取最后一个节点的时候,我们只能从头开始遍历,一直遍历到最后才能够拿到最后一个节点的数据。而循环双向链表会把header的prev指向最后一个节点,最后一个节点next指向header。其数据结构如图所示:

循环双向链表

循环链表的添加、删除和普通的双向链表是一模一样的,这里就不再赘述。

双向链表的主要优点是对于任意给的结点,都可以很轻易的获取其前结点和后结点,其主要缺点是每个结点需要保存next和prev两个属性,因此需要更多的空间开销,同时结点的插入与删除操作也将更加耗时,因为需要操作更多的指向操作。双向链表单个节点结构: 双向链表节点双向链表的数据结构: 双向链表数据结构 双向链表的插入操作插入数据到链表尾部 链表尾部插入数据插入数据到链表中间 链表中部插入数据 双向列表删除操作删除链表尾部数据 删除尾部数据删除链表中间数据 删除中间数据 循环双向列表设计 循环双向链表是在普通双向链表基础上进化得到的。在普通的双向链表中,如果我们要获取最后一个节点的时候,我们只能从头开始遍历,一直遍历到最后才能够拿到最后一个节点的数据。而循环双向链表会把header的prev指向最后一个节点,最后一个节点next指向header。其数据结构如图所示: 循环双向链表 循环链表的添加、删除和普通的双向链表是一模一样的,这里就不再赘述。
经验分享 程序员 微信小程序 职场和发展