forked from Flor91/Data-Structures-and-Algorithms
-
Notifications
You must be signed in to change notification settings - Fork 1
/
linked_lists.py
87 lines (68 loc) · 1.91 KB
/
linked_lists.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
86
87
"""
Linked list implementation
"""
class Node:
def __init__(self, dataval=None):
self.dataval=dataval
self.nextval=None
class SLinkedList:
def __init__(self):
self.headval=None
def listprint(self):
"""
Print the linked list
"""
printval = self.headval
while printval is not None:
print (printval.dataval)
printval = printval.nextval
def insertAtBegining(self, value):
"""
Insert a new value at the begining of the list
"""
new_node = Node(value)
new_node.nextval = self.headval
self.headval = new_node
def insertAtEnd(self, value):
"""
Insert a new value at the end of the list
"""
new_node = Node(value)
if self.headval is None:
self.headval = new_node
return
last_node = self.headval
while(last_node.nextval):
last_node = last_node.nextval
last_node.nextval = new_node
def insertBetween(self, middle_node, value):
new_node = Node(value)
new_node.nextval = middle_node
middle_node.nextval = new_node
def removeNode(self, key):
head = self.headval
if (head is not None):
if (head.data == key):
self.headval = head.next
head = None
return
while (head is not None):
if head.data == key:
break
prev = head
head = head.next
if (head == None):
return
prev.next = head.next
head = None
list1 = SLinkedList()
list.headval = Node("Mon")
e2 = Node("Tue")
e3 = Node("Wed")
# Link first Node to second node
list1.headval.nextval = e2
# Link second Node to third node
e2.nextval = e3
list1.listprint()
list1.insertAtBegining("Sun")
list1.insertAtEnd("Thu")