- Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLinkedList2.py
55 lines (45 loc) · 1.23 KB
/
LinkedList2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
fromrandomimportrandint
classNode:
def__init__(self, value=None) ->None:
self.value=value
self.next=None
def__str__(self) ->str:
returnstr(self.value)
classLinkedList:
def__init__(self) ->None:
self.head=None
self.tail=None
def__iter__(self):
node=self.head
whilenode:
yieldnode
node=node.next
def__str__(self) ->str:
values= [str(x.value) forxinself]
return' -> '.join(values)
def__len__(self):
result=0
node=self.head
whilenode:
result+=1
node=node.next
returnresult
defadd(self, value):
ifself.headisNone:
newNode=Node(value)
self.head=newNode
self.tail=newNode
else:
self.tail.next=Node(value)
self.tail=self.tail.next
returnself.tail
defgenerate(self, n, min_value, max_value):
self.head=None
self.tail=None
foriinrange(n):
self.add(randint(min_value, max_value))
returnself
newLL=LinkedList()
newLL.generate(10, 0, 99)
print(newLL)
print(len(newLL))