mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-11-01 23:02:04 -04:00
| .. | ||
| detect_cycle.py | ||
| detect_cycle_II.py | ||
| double_linked_list.py | ||
| finding_intersection.py | ||
| linked_list_fifo.py | ||
| linked_list_II.py | ||
| merge_two_lists.py | ||
| README.md | ||
| remove_kth_node.py | ||
| reverse_linked_list.py | ||
| swap_every_two_nodes.py | ||
Linked List
- unlike an array, a list does not provide constant time access to an index (as it needs to interact through all k elements), however addition and removal of elements are constant time.
- to remove a node you set
prev.nextequal tonode.next. if it's a double list, you also updatenode.nextwithnode.next.prevtonode.prev(and deallocate the memory).
detecting cycles
- can be done with hash table or the two-pointer technique, where if there is no cycle, the faster pointer (going 2 steps) will stop at the end of the list, but if there is a cycle, the fast pointer will eventually meet the slow pointer (going 1 step). if there is no cycle, the faster pointer takes
N/2to reach the end of the list (Nbeing the length).
LinkedListFIFO.py
python LinkedListFIFO.py
Linked List FIFO
Add 1: None
Add 2: Nonew
Add 3: None
Length: 3
Find 1: (None, None, 0)
Delete 1: None
Length: 0
Find 1: (None, None, 0)