Operation | Array Stack | Linked Stack | Min Stack | Thread-Safe Stack |
---|---|---|---|---|
Push | O(1)* | O(1) | O(1) | O(1)** |
Pop | O(1) | O(1) | O(1) | O(1)** |
Peek | O(1) | O(1) | O(1) | O(1)** |
Get Min | N/A | N/A | O(1) | N/A |
Is Empty | O(1) | O(1) | O(1) | O(1)** |
* Amortized for dynamic arrays ** Not counting lock acquisition time
Implementation | Space Complexity | Additional Notes |
---|---|---|
Array Stack | O(n) | Contiguous memory, may have unused space |
Linked Stack | O(n) | Extra space for node pointers |
Min Stack | O(n) | Additional stack for minimums |
Thread-Safe Stack | O(n) | Additional space for synchronization |
Parentheses Matching
Expression Evaluation
Backtracking
Monotonic Stack
Stack of Stacks
Function Call Stack
Operation | Array Stack | Linked Stack | Min Stack | Thread-Safe Stack |
---|---|---|---|---|
Push | O(1)* | O(1) | O(1) | O(1)** |
Pop | O(1) | O(1) | O(1) | O(1)** |
Peek | O(1) | O(1) | O(1) | O(1)** |
Get Min | N/A | N/A | O(1) | N/A |
Is Empty | O(1) | O(1) | O(1) | O(1)** |
* Amortized for dynamic arrays ** Not counting lock acquisition time
Implementation | Space Complexity | Additional Notes |
---|---|---|
Array Stack | O(n) | Contiguous memory, may have unused space |
Linked Stack | O(n) | Extra space for node pointers |
Min Stack | O(n) | Additional stack for minimums |
Thread-Safe Stack | O(n) | Additional space for synchronization |
Parentheses Matching
Expression Evaluation
Backtracking
Monotonic Stack
Stack of Stacks
Function Call Stack