关于python的简单双向链表

双向链表

  • 既可以从头遍历到尾, 又可以从尾遍历到头

  • 一个节点既有向前连接的引用, 也有一个向后连接的引用.

111(个人理解)、通过使用一个类似于“目”的结构,一个存上一个的地址,一个存数据,一个存下一个的地址。使得内存上不连续的空间连接起来。

class Double_Link_list:
    def __init__(self):
        self.head = None
        self.tail = None
        self.length = 0

    class Note:
        def __init__(self, itme):
            self.itme = itme
            self.next = None
            self.prev = None

    def insert(self, itme, index=-1):
        it_me = self.Note(itme)
        if index < 0 and index != -1 and index > self.length:
            raise IndexError

        if self.length == 0:
            self.head = it_me
            self.tail = it_me
            self.length += 1
            return True

        if index == -1:
            it_me.prev = self.tail
            self.tail.next = it_me
            self.tail = self.tail.next
            self.length += 1
            return True

        if index < self.length:
            current = self.head
            while current != it_me:
                current = current.next

            it_me.next = current
            current.prev.next = it_me
            it_me.prev = current.prev
            current.prev = it_me
            self.length += 1
            return True

    def print(self):
        if self.length == 0:
            return False
        else:
            current = self.head
            for i in range(self.length):
                print(current.itme)
                current = current.next
            return True

    def delete(self, del_itme):
        if self.length == 0:
            return False
        current = self.head
        while del_itme != current.itme:
            current = current.next

        current.prev.next = current.next
        current.next.prev = current.prev
        self.length -= 1
        return True

    def indexof(self, itme):
        if self.length == 0:
            return 0
        current = self.head
        count = 0
        while itme != current.itme:
            current = current.next
            count += 1
        return count


d1 = Double_Link_list()
d1.insert(1)
d1.insert(2)
d1.insert(3)
d1.delete(2)
d1.insert(4)
d1.print()

print("---", d1.indexof(4))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值