mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 23:11:09 +00:00
Added new Algorithm to find middle element of Linked List (#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>
This commit is contained in:
parent
728deeae82
commit
c775baf55f
64
data_structures/linked_list/middle_element_of_linked_list.py
Normal file
64
data_structures/linked_list/middle_element_of_linked_list.py
Normal file
|
@ -0,0 +1,64 @@
|
|||
class Node:
|
||||
def __init__(self, data: int) -> int:
|
||||
self.data = data
|
||||
self.next = None
|
||||
|
||||
|
||||
class LinkedList:
|
||||
def __init__(self):
|
||||
self.head = None
|
||||
|
||||
def push(self, new_data:int) -> int:
|
||||
new_node = Node(new_data)
|
||||
new_node.next = self.head
|
||||
self.head = new_node
|
||||
return self.head.data
|
||||
|
||||
def middle_element(self) -> int:
|
||||
'''
|
||||
>>> link = LinkedList()
|
||||
>>> link.middle_element()
|
||||
No element found.
|
||||
>>> link.push(5)
|
||||
5
|
||||
>>> link.push(6)
|
||||
6
|
||||
>>> link.push(8)
|
||||
8
|
||||
>>> link.push(8)
|
||||
8
|
||||
>>> link.push(10)
|
||||
10
|
||||
>>> link.push(12)
|
||||
12
|
||||
>>> link.push(17)
|
||||
17
|
||||
>>> link.push(7)
|
||||
7
|
||||
>>> link.push(3)
|
||||
3
|
||||
>>> link.push(20)
|
||||
20
|
||||
>>> link.push(-20)
|
||||
-20
|
||||
>>> link.middle_element()
|
||||
12
|
||||
>>>
|
||||
'''
|
||||
slow_pointer = self.head
|
||||
fast_pointer = self.head
|
||||
if self.head:
|
||||
while fast_pointer and fast_pointer.next:
|
||||
fast_pointer = fast_pointer.next.next
|
||||
slow_pointer = slow_pointer.next
|
||||
return slow_pointer.data
|
||||
else:
|
||||
print("No element found.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
link = LinkedList()
|
||||
for i in range(int(input().strip())):
|
||||
data = int(input().strip())
|
||||
link.push(data)
|
||||
print(link.middle_element())
|
Loading…
Reference in New Issue
Block a user