双向链表

本文介绍了双向链表的概念,指出其相对于单向链表在数据操作上的优势,并重点讲解了如何使用Python来实现双向循环链表,包括如何构造双循环链表的结构和双向链表的特点。
摘要由CSDN通过智能技术生成

双向链表


单向链表相对数组来说已经有很多优点了,但是,它还有一个最大的弊端,每次查找元素时都要一路遍历,没办法倒回来,这种特性在进行数据操作时,会大大浪费时间,鉴于此,出现了双向链表的概念。

双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。

循环链表是一种链式存储结构,它的最后一个结点指向头结点,形成一个环。因此,从循环链表中的任何一个结点出发都能找到任何其他结点。循环链表的操作和单链表的操作基本一致,差别仅仅在于算法中的循环条件有所不同。

双循环链表,只需要最后一个元素的next指向head->next,head->next的prior指向最后一个节点即可。

顾名思义,双向链表就是具备两个方向的指向,无非就是每个结点成了两个指针。

python实现实现双向链表

# coding:utf-8
#由于双向链表有一些操作和单向链表一样,所以可以将单链表的实现封装成模块,导入单链表类模块,方便继承
# from singlelink import SingleLinkList

# 定义双向链表的结点类,双向链表结点包含三个部分,数据,向前的指针和向后的指针
class Node(object):
    '''定义结点'''
    def __init__(self, item):
        self.elem = item
        self.next = None
        self.prev = None



class Doublelinklist():
    '''双向链表,有些方法和单向链表一样,可以继承单向链表的类(可以尝试)'''
    #链表初始化可以继承单向链表
    #链表判空可以继承单向链表
    #求链表长度可以继承单向链表
    #遍历可以继承单向链表
    
    #这里我们不用继承
    def __init__(self,node=None):
        '''链表初始化'''
        self.__head = node
        
    def is_empty(self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值