单向循环链表

本文介绍了单向循环链表的概念及其构成,并详细讲解了如何使用Python来实现单向循环链表的数据结构。
摘要由CSDN通过智能技术生成

单向循环链表


单向循环链表:

在单向链表中,头指针是相当重要的,因为单向链表的操作都需要头指针,所以如果头指针丢失或者破坏,
那么整个链表都会遗失,并且浪费链表内存空间。

单向循环链表的构成:

如果把单链表的最后一个节点的指针指向链表头部,而不是指向NULL,那么就构成了一个单向循环链表。

python实现单向循环链表

class Node():
    '''单循环链表的结点:next默认指向头结点'''
    def __init__(self,elem):
        self.elem = elem
        self.next = None

class SingleCycleLinkList():
    '''循环单链表'''
    def __init__(self,node=None):
        self.__head = node
        #node如果不是指向None,说明不是空链表,next虚需要指向自己,构成环
        if node:
            node.next = node

    def is_empty(self):
        '''链表是否为空'''
        # 如果头结点为None,说明为空,返回true
        return self.__head == None


    def length(self):
        '''链表长度:求链表长度需要从头开始遍历并计数;
        注意考虑特殊情况,即链表为空链表,即头结点为None,不会进入循环,需要加判断如果链表为空,直接返回0 ;
        另一种特殊情况,循环链表只有一个结点,cur.next ==self.__head ,
        不会进入循环,返回的count为1'''
        if self.__head == None:
            return 0
        else:
            # 游标cut表示指向当前结点,初始指向头结点 
            cur =self.__head
            # count用来计数,从1开始
            count = 1
            #循环退出条件:由于单循环链表的尾结点不指向None,而是指向头结点;
            #所以当游标cur.next指向头结点时,整个链表循环一遍,循环结束。
            while cur.next != self.__head:
                #循环一次,count计数加1
                count += 1
                #游标cur也向后移动一个结点
                cur = cur.next
            # 循环结束,count的值即为链表长度,返回count
            return count 
       
    
    def travel(self):
        '''遍历整个链表:需要从头开始,输出每个结点的元素;
         注意考虑特殊情况,即链表为空链表,即头结点为None,不需要输出任何元素,所以需要另外写判断处理,如果为空,直接返回
        另一种特殊情况,链表只有一个结点,即cur.next == self._head ,不会进入循环,直接打印结点,符合要求 '''
        if self.is_empty():
            return
        else:
            #定义游标cur表示指向当前结点,初始指向头结点
            cur 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值