File tree Expand file tree Collapse file tree 2 files changed +51
-67
lines changed
data_structures/linked_list Expand file tree Collapse file tree 2 files changed +51
-67
lines changed
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ from typing import Any
2
+
3
+
4
+ class Node :
5
+ def __init__ (self , data : Any ) -> None :
6
+ self .data = data
7
+ self .next_node = None
8
+
9
+ def __iter__ (self ):
10
+ node = self
11
+ while node :
12
+ yield node .data
13
+ node = node .next_node
14
+
15
+ def has_loop (self ) -> bool :
16
+ > >> node1 = Node (1 )
17
+ > >> node1 .next_node = Node (2 )
18
+ > >> node1 .next_node .next_node = Node (3 )
19
+ > >> node1 .next_node .next_node .next_node = Node (4 )
20
+ > >> node1 .next_node .next_node .next_node = node1 .next_node
21
+ > >> has_loop (node1 )
22
+ True
23
+
24
+ > >> node2 = Node (1 )
25
+ > >> node2 .next_node = Node (2 )
26
+ > >> node2 .next_node .next_node = Node (1 )
27
+ > >> node2 .next_node .next_node .next_node = Node (2 )
28
+ > >> contains_loop (node2 )
29
+ False
30
+ """
31
+ return len(list(self)) != len(set(self))
32
+
33
+
34
+ if __name__ == "__main__":
35
+ node1 = Node (1 )
36
+ node1 .next_node = Node (2 )
37
+ node1 .next_node .next_node = Node (3 )
38
+ node1 .next_node .next_node .next_node = Node (4 )
39
+ node1 .next_node .next_node .next_node = node1 .next_node
40
+ print (has_loop (node1 ))
41
+
42
+ node2 = Node (5 )
43
+ node2 .next_node = Node (6 )
44
+ node2 .next_node .next_node = Node (5 )
45
+ node2 .next_node .next_node .next_node = Node (6 )
46
+ print (has_loop (node2 ))
47
+
48
+ node3 = Node (1 )
49
+ # node3.next_node = Node(2)
50
+ # node3.next_node.next_node = node3
51
+ print (has_loop (node3 ))
You can’t perform that action at this time.
0 commit comments