-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlinkedlist.py
85 lines (71 loc) · 1.66 KB
/
linkedlist.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
class Node:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
class LinkedList():
def __init__(self):
self.head = None
def insert_at_beginning(self, data):
node = Node(data, self.head)
self.head = node
def print_ll(self):
if self.head is None:
print("LinkedList is empty")
ll_str = ""
iterator = self.head
while iterator:
ll_str += str(iterator.data) + " --> "
iterator = iterator.next
print(ll_str)
def remove_from_front(self):
if self.head is None:
print("LinkedList is empty")
self.head = self.head.next
def insert_at_end(self, data):
if self.head == None:
self.head = Node(data, None)
iterator = self.head
while iterator.next:
iterator = iterator.next
if iterator.next == None:
iterator.next = Node(data,None)
def length(self):
count = 0
iterator = self.head
while iterator:
count = count+1
iterator = iterator.next
return count
def remove_from_back(self):
if self.head == None:
print("LinkedList is empty")
rear = self.head
deletion_iterator = rear
while rear:
deletion_iterator = rear
rear = rear.next
if rear.next == None:
rear = None
if rear == self.head:
self.head == None
if __name__ == "__main__":
ll = LinkedList()
ll.insert_at_beginning(5)
# ll.insert_at_beginning(10)
# ll.insert_at_beginning(15)
# ll.insert_at_end(150)
ll.insert_at_end(250)
ll.print_ll()
# ll.remove_from_front()
# ll.print_ll()
# ll.remove_from_front()
# ll.print_ll()
# ll.insert_at_end(200)
# ll.insert_at_end(300)
# ll.print_ll()
ll.remove_from_back()
ll.print_ll()
ll.remove_from_back()
ll.print_ll()
ll.remove_from_back()
ll.print_ll()