def get_next(self): """Test get_next method.""" n1 = Node(1) n2 = Node(2) # by default, next is None self.assertIsNone(n1.next) n1.set_next(n2) self.assertEqual(n1.get_next(), n2)
def set_next(self): """Test set_next method.""" n1 = Node(1) n2 = Node(2) # by default, next is None self.assertIsNone(n1.next) n1.set_next(n2) # data from next is data from node 2 self.assertEqual(n1.get_next().get_data(), 2)
def returnbeginning(n1): fast = n1 slow = n1 while fast.get_next() is not None and slow.get_next() is not None: fast = fast.get_next().get_next() slow = slow.get_next() if fast is slow: break fast = n1 while True: if fast is slow: return slow else: fast = fast.get_next() slow = slow.get_next() n8 = Node(8) n7 = Node(7, n8) n6 = Node(6, n7) n5 = Node(5, n6) n4 = Node(4, n5) n3 = Node(3, n4) n8.set_next(n3) n2 = Node(2, n3) n1 = Node(1, n2) print returnbeginning(n1).get_data()