Professional Documents
Culture Documents
1 class Node:
2 def __init__(self, data):
3 self.data = data
4 self.next= None
1 n1 = Node('eggs')
2 n2 = Node('ham')
3 n3 = Node('spam')
4 n1.next=n2
5 print(n1.next.data)
6 n2.next=n3
7 print(n2.next.data)
8 print(n1.next.data)
9 print('with loop')
10
11 current=n2
12 while current:
13 print(current.data)
14 current= current.next
ham
spam
ham
with loop
ham
spam
1 class Node:
2 def __init__(self, data):
3 self.data = data
4 self.next= None
5
6 class SinglyLinkedList():
7 def __init__(self):
8 self.head = None
9 self.size = 0
10
11
12 #Append data to the end of the linked list; naive approach
13 def append(self, new_data):
14 new_node = Node(new_data)
15 if self.head is None:
16 self.head = new_node
17 else:
18 current_node = self.head
19 while current_node.next is not None:
20 current_node = current_node.next
21 current_node.next = new_node
22 self.size += 1
23
24 # print the linked list
25 def print_all(self):
26 current_node = self.head
27 while current_node!=None:
28 print(current_node.data, end = "->")
29 current_node = current_node.next
30 print()
31
32
33 # search a specific value in the linked list
34 def search(self, data):
35 current_node = self.head
36 while current_node is not None:
37 if current_node.data == data:
38 return True
39 current_node = current_node.next
40 return False
41
https://colab.research.google.com/drive/1d77jyoPbXRp0Q865aj8PIa3Sfyps9vIt?authuser=1#scrollTo=CVOMx5Zk45ng&printMode=true 1/3
3/12/23, 11:36 PM 2230851_cse203_class-10 - Colaboratory
42
43 #find odd
44 def findOdd(self):
45 current_node = self.head
46 while current_node != None:
47 if (current_node.data % 2 != 0):
48 return current_node.data
49 current_node = current_node.next
50
51
52 # Delete data from the head of the list
53 def pop_left(self):
54 if self.size==0:
55 print("List is empty")
56 else:
57 self.size -= 1
58 self.head = self.head.next
59
60 # Delete data from the end of the list
61 def pop(self):
62 if self.size==0:
63 print("List is empty")
64 else:
65 self.size -= 1
66 current_node = self.head
67 if self.head.next==None:
68 self.head = self.head.next
69 else:
70 while current_node.next is not None:
71 if current_node.next.next is None:
72 current_node.next = None
73 else:
74 current_node = current_node.next
75
76
77 # Delete the first appearance of data from the list
78 def delete(self, value_to_be_deleted):
79 if self.size==0:
80 print("List is empty")
81 else:
82 current_node = self.head
83 if current_node.data == value_to_be_deleted:
84 self.size -= 1
85 self.head = self.head.next
86 else:
87 while current_node.next is not None:
88 if current_node.next.data == value_to_be_deleted:
89 self.size -= 1
90 current_node.next = current_node.next.next
91 return
92 else:
93 current_node = current_node.next
94
95 #find odd numder
96 def odd_deleter(self):
97 word = self.head
98 while word:
99 val = word.data
100 if val % 2 != 0:
101 self.delete(val)
102 break
103 word = word.next
104 return "No odd number found !"
105
106
107 def del_nth(self,n):
108 if self.size < n:
109 print("there is no val")
https://colab.research.google.com/drive/1d77jyoPbXRp0Q865aj8PIa3Sfyps9vIt?authuser=1#scrollTo=CVOMx5Zk45ng&printMode=true 2/3
3/12/23, 11:36 PM 2230851_cse203_class-10 - Colaboratory
110 else:
111 current_node = self.head
112 for i in range(n-1):
113 current_node = current_node.next
114 self.delete(current_node.data)
115
116
117
118 s= SinglyLinkedList()
119 data=[6,8,10,3,2]
120 # s.append('sargis')
121 # s.append('id: 2230851')
122 # s.append(6)
123 # s.append(8)
124 # s.append(10)
125 # s.append(3)
126 # s.append(2)
127 for i in data:
128 s.append(i)
129
130 s.print_all()
131 print(s.search(3))
132 s.pop()
133 s.print_all()
134 s.pop_left()
135 s.print_all()
136 s.odd_deleter()
137 s.print_all()
138 s.findOdd()
139 s.print_all()
140 s.del_nth(6)
141 s.print_all()
6->8->10->3->2->
True
6->8->10->3->
8->10->3->
8->10->
8->10->
there is no val
8->10->
https://colab.research.google.com/drive/1d77jyoPbXRp0Q865aj8PIa3Sfyps9vIt?authuser=1#scrollTo=CVOMx5Zk45ng&printMode=true 3/3