数据结构之python实现循环双链表

本文详细介绍了如何使用Python实现循环双链表的各种操作,包括创建、获取长度、判断空、尾部插入、指定位置插入、头部插入、删除节点、获取节点值、查找指定节点以及遍历输出所有节点。
摘要由CSDN通过智能技术生成

循环双链表:就是将双链表中最后一个结点的后继指针指向双链表的头结点,并将其头结点的先驱指针指向表中最后一个结点。

python实现

创建循环双链表

class DoubleLinkedNode:
    def __init__(self,data):
        self.data = data
        self.next = None
        self.prev = None
class CircularDoubleLinkedList:
    def __init__(self):
        self.head = DoubleLinkedNode(None)
    '''创建循环双链表'''
    def CreatCircularDoubleLinkedList(self):
        data = input("请输入数据(按回车键确定,按“#”结束):")
        cNode = self.head
        while data != "#":
            nNode = DoubleLinkedNode(int(data))
            cNode.next = nNode
            nNode.prev = cNode
            nNode.next = self.head
            self.head.prev = nNode
            cNode = cNode.next
            data = input("请输入数据(按回车键确定,按“#”结束):")
CDLList = CircularDoubleLinkedList()
CDLList.CreatCircularDoubleLinkedList()

结果如下:
在这里插入图片描述

获取循环双链表长度

class DoubleLinkedNode:
    def __init__(self,data):
        self.data = data
        self.next = None
        self.prev = None
class CircularDoubleLinkedList:
    def __init__(self):
        self.head = DoubleLinkedNode(None)
    '''创建循环双链表'''
    def CreatCircularDoubleLinkedList(self):
        data = input("请输入数据(按回车键确定,按“#”结束):")
        cNode = self.head
        while data != "#":
            nNode = DoubleLinkedNode(int(data))
            cNode.next = nNode
            nNode.prev = cNode
            nNode.next = self.head
            self.head.prev = nNode
            cNode = cNode.next
            data = input("请输入数据(按回车键确定,按“#”结束):")
    '''获取循环双链表长度'''
    def GetLength(self):
        cNode = self.head
        i = 0
        while cNode.next != self.head:
            i += 1
            cNode = cNode.next
        print(i)
CDLList = CircularDoubleLinkedList()
CDLList.CreatCircularDoubleLinkedList()
CDLList.GetLength()

结果如下:
在这里插入图片描述

判断循环双链表是否为空

class DoubleLinkedNode:
    def __init__(self,data):
        self.data = data
        self.next = None
        self.prev = None
class CircularDoubleLinkedList:
    def __init__(self):
        self.head = DoubleLinkedNode(None)
    '''创建循环双链表'''
    def CreatCircularDoubleLinkedList(self):
        data = input("请输入数据(按回车键确定,按“#”结束):")
        cNode = self.head
        while data != "#":
            nNode = DoubleLinkedNode(int(data))
            cNode.next = nNode
            nNode.prev = cNode
            nNode.next = self.head
            self.head.prev = nNode
            cNode = cNode.next
            data = input("请输入数据(按回车键确定,按“#”结束):")
    '''获取循环双链表长度'''
    def GetLength(self):
        cNode = self.head
        i = 0
        while cNode.next != self.head and cN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值