Skip to content

Commit c775baf

Browse files
meSajiedcclauss
andauthored
Added new Algorithm to find middle element of Linked List (TheAlgorithms#1822)
* Added new Algorithm to find middle element of Linked List * Rename MiddleElementOfLinkedList.py to middle_element_of_linked_list.py * changed "middle_element_of_linked_list.py" algorithm for taking input * Update middle_element_of_linked_list.py * Update middle_element_of_linked_list.py * Update middle_element_of_linked_list.py * Update middle_element_of_linked_list.py * Update middle_element_of_linked_list.py * Update middle_element_of_linked_list.py * Update middle_element_of_linked_list.py * Update middle_element_of_linked_list.py * Update middle_element_of_linked_list.py * Whack the trailing whitespace Co-authored-by: Christian Clauss <cclauss@me.com>
1 parent 728deea commit c775baf

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
class Node:
2+
def __init__(self, data: int) -> int:
3+
self.data = data
4+
self.next = None
5+
6+
7+
class LinkedList:
8+
def __init__(self):
9+
self.head = None
10+
11+
def push(self, new_data:int) -> int:
12+
new_node = Node(new_data)
13+
new_node.next = self.head
14+
self.head = new_node
15+
return self.head.data
16+
17+
def middle_element(self) -> int:
18+
'''
19+
>>> link = LinkedList()
20+
>>> link.middle_element()
21+
No element found.
22+
>>> link.push(5)
23+
5
24+
>>> link.push(6)
25+
6
26+
>>> link.push(8)
27+
8
28+
>>> link.push(8)
29+
8
30+
>>> link.push(10)
31+
10
32+
>>> link.push(12)
33+
12
34+
>>> link.push(17)
35+
17
36+
>>> link.push(7)
37+
7
38+
>>> link.push(3)
39+
3
40+
>>> link.push(20)
41+
20
42+
>>> link.push(-20)
43+
-20
44+
>>> link.middle_element()
45+
12
46+
>>>
47+
'''
48+
slow_pointer = self.head
49+
fast_pointer = self.head
50+
if self.head:
51+
while fast_pointer and fast_pointer.next:
52+
fast_pointer = fast_pointer.next.next
53+
slow_pointer = slow_pointer.next
54+
return slow_pointer.data
55+
else:
56+
print("No element found.")
57+
58+
59+
if __name__ == "__main__":
60+
link = LinkedList()
61+
for i in range(int(input().strip())):
62+
data = int(input().strip())
63+
link.push(data)
64+
print(link.middle_element())

0 commit comments

Comments
 (0)