Jestem nowy na datastrukturach. Podczas nauki okrężnej Linkedlist Nie jestem w stanie postępować dalej, ponieważ utknąłem, próbuję przekonwertować pojedynczo Linkedlist do okólnika, a następnie weryfikacja tego samego. Mój program nie daje produkcji i nikogo, pomóż mi w odniesieniu do tego.

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())
0
Chandan 14 marzec 2021, 22:22

1 odpowiedź

Najlepsza odpowiedź

Metoda isCircular() jest zepsuta, ponieważ jeśli jest okrągły, to temp.next != None zawsze będzie True i pojawi się nieskończona pętla.

Być może spróbuj czegoś takiego:

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
0
StardustGogeta 14 marzec 2021, 19:33