mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-12-25 22:46:20 +08:00
parent
5667cfb550
commit
7207bcefb2
@ -19,6 +19,82 @@ potentially more efficient (for nodes other than first nodes) because there
|
||||
is no need to keep track of the previous node during traversal or no need
|
||||
to traverse the list to find the previous node, so that its link can be modified.
|
||||
|
||||
## Pseudocode
|
||||
|
||||
### Insert
|
||||
|
||||
Add(value)
|
||||
Pre: value is the value to add to the list
|
||||
Post: value has been placed at the tail of the list
|
||||
n ← node(value)
|
||||
if head = ø
|
||||
head ← n
|
||||
tail ← n
|
||||
else
|
||||
n.previous ← tail
|
||||
tail.next ← n1
|
||||
tail ← n
|
||||
end if
|
||||
end Add
|
||||
|
||||
### Delete
|
||||
Remove(head, value)
|
||||
Pre: head is the head node in the list
|
||||
value is the value to remove from the list
|
||||
Post: value is removed from the list, true; otherwise false
|
||||
if head = ø
|
||||
return false
|
||||
end if
|
||||
if value = head.value
|
||||
if head = tail
|
||||
head ← ø
|
||||
tail ← ø
|
||||
else
|
||||
head ← head.Next
|
||||
head.previous ← ∅
|
||||
end if
|
||||
return true
|
||||
end if
|
||||
n ← head.next
|
||||
while n = ø and value = n.value
|
||||
n ← n.next
|
||||
end while
|
||||
if n = tail
|
||||
tail ← tail.previous
|
||||
tail.next ← ø
|
||||
return true
|
||||
else if n = ø
|
||||
n.previous.next ← n.next
|
||||
n.next.previous ← n.previous
|
||||
return true
|
||||
end if
|
||||
return false
|
||||
end Remove
|
||||
|
||||
### Reverse Traversal
|
||||
ReverseTraversal(tail)
|
||||
Pre: tail is the node of the list to traverse
|
||||
Post: the list has been traversed in reverse order
|
||||
n ← tail
|
||||
while n = ø
|
||||
yield n.value
|
||||
n ← n.previous
|
||||
end while
|
||||
end Reverse Traversal
|
||||
|
||||
## Big O
|
||||
|
||||
## Time Complexity
|
||||
|
||||
Access: O(n)
|
||||
Search: O(n)
|
||||
Insert: O(1)
|
||||
Delete: O(1)
|
||||
|
||||
### Space Complexity
|
||||
|
||||
O(n)
|
||||
|
||||
## References
|
||||
|
||||
- [Wikipedia](https://en.wikipedia.org/wiki/Doubly_linked_list)
|
||||
|
Loading…
Reference in New Issue
Block a user