单链表转循环验证

问题描述

我是数据结构的新手。在学习循环链表时,我无法继续前进,因为我被卡住了,我正在尝试将单链表转换为循环链表,然后对其进行验证。我的程序没有给出输出,请任何人帮助我。

class Node:
    def __init__(self,data):
        self.data = data
        self.next = None


class Cll:
    def __init__(self):
        self.head = None

    def push(self,data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node

    def makeCircular(self):
        temp = self.head
        while(temp.next != None):
            temp= temp.next
        temp.next = self.head

    def isCircular(self):
        temp = self.head
        while (temp.next != None):
            temp = temp.next
        if temp.next == self.head:
            return True
        else:
            return False

    def printList(self):
        temp = self.head
        #print(temp.data)
        while(temp!= None):
            print(temp.data,end = " ")
            temp = temp.next
        print("\n")

cll = Cll()
# l
for i in range(5):
    cll.push(i)
cll.printList()
cll.makeCircular()
print(cll.isCircular())

解决方法

您的 isCircular() 方法被破坏,因为如果它是循环的,那么 temp.next != None 将始终为 True,并且会发生无限循环。

也许可以试试这样的:

def isCircular(self):
    temp = self.head
    while temp.next is not None and temp.next is not self.head:
        temp = temp.next
    return temp.next is self.head