mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +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