栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

通过python设置一个双链表,并且完成双链表的一系列操作(包括 增 删 改 查)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过python设置一个双链表,并且完成双链表的一系列操作(包括 增 删 改 查)

class Doublelink(): #自定义一个双链表,这个双链表包括数据,前指针后后指针。
    def __init__(self, num_data):
        self.item = num_data  #双链表中的数据项
        self.prev = None   #双链表中的前指针
        self.next = None   #双链表指针中的后指针


class DoubleList():      #开始双链表操作
    def __init__(self):   
        self.head = None  #初始化一个头节点

    def is_empty(self):   #判断头节点是否为空
        return self.head is None

    def add(self, item):   #往链表中添加数据
        temp = Doublelink(item)  #自定义一个节点
        temp.prev = self.head    #temp的前指针指向头节点
        temp.next = self.head     #temp的后指针指向头节点
        self.head = temp      #头节点指向temp

    def append(self, item):  #往链表的任意一项插入节点
        temp = Doublelink(item)
        if self.is_empty():   #判断节点是否为空,如果为空则直接加入,否则就循环遍历
            self.head = temp
            temp.prev = self.head
        else:
            cur = self.head
            while cur.next != None:
                cur = cur.next
            cur.next = temp
            temp.prev = cur

    def size(self):  #计算你创造链表的大小
        cur = self.head
        count = 0
        while cur != None:
            count += 1
            cur = cur.next
        return count

    def travel(self):  #循环遍历链表
        cur = self.head
        while cur != None:
            print(cur.item)
            cur = cur.next

    def search(self, item):  #查找链表中的某一项是否存在
        cur = self.head
        bool = False
        while cur != None and not bool:  #循环条件是bool为True时和cur=None时终止循环
            if cur.item == item:
                return True   #如果查找的数据项存在,则返回True,否则继续查找
            else:
                cur = cur.next
        return bool

    def insert(self, item, data):  #往双链表中插入某一数据项
        cur = self.head  #这里要设置两个节点,一个是cur节点,另一个是previous节点。
        previous, found = None, False  
        while cur != None and not found:
            if cur.item == item:
                found = True
            else:
                previous = cur
                cur = cur.next
        temp = Doublelink(data)
        if previous == None:
            temp.prev = self.head
            temp.next = self.head
            self.head = temp
        else:
            temp.next = cur
            cur.prev = temp
            previous.next = temp
            temp.prev = previous

    def remove(self, item):  #删除双链表中的你想删除的数据项
        cur = self.head
        previous, found = None, False
        while cur != None and not found:
            if cur.item == item:
                found = True
            else:
                previous = cur
                cur = cur.next
        if previous == None:
            self.head = cur.next
            cur.next.prev = self.head
        else:
            previous.next = cur.next
            cur.next.prev = cur.prev


d = DoubleList()
d.add("head")
d.add('丝袜')
d.add('打底袜')
d.add('连裤袜')
d.add('过膝袜')
d.append('拼接袜')
d.travel()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768821.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号