1class Node:
2 def __init__(self, data = None, next_node = None):
3 self.data = data
4 self.nextNode = next_node
5
6 def get_data(self):
7 return self.data
8
9 def set_data(self, data):
10 self.data = data
11
12 def get_nextNode(self):
13 return self.nextNode
14
15 def set_nextNode(self, nextNode):
16 self.nextNode = nextNode
17
18
19class LinkedList:
20 def __init__(self, head = None):
21 self.head = head
22
23
24 def add_Node(self, data):
25 # if empty
26 if self.head == None:
27 self.head = Node(data)
28
29
30 # not empty
31 else:
32 curr_Node = self.head
33
34 # if node added is at the start
35 if data < curr_Node.get_data():
36 self.head = Node(data, curr_Node)
37
38 # not at start
39 else:
40 while data > curr_Node.get_data() and curr_Node.get_nextNode() != None:
41 prev_Node = curr_Node
42 curr_Node = curr_Node.get_nextNode()
43
44 # if node added is at the middle
45 if data < curr_Node.get_data():
46 prev_Node.set_nextNode(Node(data, curr_Node))
47
48
49 # if node added is at the last
50 elif data > curr_Node.get_data() and curr_Node.get_nextNode() == None:
51 curr_Node.set_nextNode(Node(data))
52
53
54
55 def search(self, data):
56 curr_Node = self.head
57 while curr_Node != None:
58 if data == curr_Node.get_data():
59 return True
60
61 else:
62 curr_Node = curr_Node.get_nextNode()
63
64 return False
65
66
67 def delete_Node(self, data):
68 if self.search(data):
69 # if data is found
70
71 curr_Node = self.head
72 #if node to be deleted is the first node
73 if curr_Node.get_data() == data:
74 self.head = curr_Node.get_nextNode()
75
76 else:
77 while curr_Node.get_data() != data:
78 prev_Node = curr_Node
79 curr_Node = curr_Node.get_nextNode()
80
81 #node to be deleted is middle
82 if curr_Node.get_nextNode() != None:
83 prev_Node.set_nextNode(curr_Node.get_nextNode())
84
85 # node to be deleted is at the end
86 elif curr_Node.get_nextNode() == None:
87 prev_Node.set_nextNode(None)
88
89 else:
90 return "Not found."
91
92 def return_as_lst(self):
93 lst = []
94 curr_Node = self.head
95 while curr_Node != None:
96 lst.append(curr_Node.get_data())
97 curr_Node = curr_Node.get_nextNode()
98
99 return lst
100
101 def size(self):
102 curr_Node = self.head
103 count = 0
104 while curr_Node:
105 count += 1
106 curr_Node = curr_Node.get_nextNode()
107 return count
108
109
110## TEST CASES #
111test1 = LinkedList()
112test2 = LinkedList()
113test1.add_Node(20)
114test1.add_Node(15)
115test1.add_Node(13)
116test1.add_Node(14)
117test1.delete_Node(17)
118print(test1.return_as_lst())
119print(test2.size())
1
2class Node:
3 def __init__(self, data=None):
4 self.data = data
5 self.next = None
6
7class SLinkedList:
8 def __init__(self):
9 self.head = None
10
11 def Atbegining(self, data_in):
12 NewNode = Node(data_in)
13 NewNode.next = self.head
14 self.head = NewNode
15
16# Function to remove node
17 def RemoveNode(self, Removekey):
18
19 HeadVal = self.head
20
21 if (HeadVal is not None):
22 if (HeadVal.data == Removekey):
23 self.head = HeadVal.next
24 HeadVal = None
25 return
26
27 while (HeadVal is not None):
28 if HeadVal.data == Removekey:
29 break
30 prev = HeadVal
31 HeadVal = HeadVal.next
32
33 if (HeadVal == None):
34 return
35
36 prev.next = HeadVal.next
37
38 HeadVal = None
39
40 def LListprint(self):
41 printval = self.head
42 while (printval):
43 print(printval.data),
44 printval = printval.next
45
46
47llist = SLinkedList()
48llist.Atbegining("Mon")
49llist.Atbegining("Tue")
50llist.Atbegining("Wed")
51llist.Atbegining("Thu")
52llist.RemoveNode("Tue")
53llist.LListprint()