https://faroukibrahim-fii.github.io/reading-notes/
A stack is a data structure that consists of Nodes. Each Node references the next Node in the stack, but does not reference its previous.
First In Last Out
This means that the first item added in the stack will be the last item popped out of the stack.
Last In First Out
This means that the last item added to the stack will be the first item popped out of the stack.
Here’s an example of what a stack looks like. As you can see, the topmost item is denoted as the top.
Pushing a Node onto a stack will always be an O(1) operation. This is because it takes the same amount of time no matter how many Nodes (n) you have in the stack.
Let’s walk through the steps:
First, you should have the Node that you want to add. Here is an example of a Node that we want to add to the stack.
Next, you need to assign the next property of Node 5 to reference the same Node that top is referencing: Node 4
echnically at this point, your new Node is added to your stack, but there is no indication that it is the first Node in the stack. To make this happen, you have to re-assign our reference top to the newly added Node, Node 5.
Congratulations! You completed a successful push of Node 5 onto the stack.
Popping a Node off a stack is the action of removing a Node from the top. When conducting a pop, the top Node will be re-assigned to the Node that lives below and the top Node is returned to the user.
Typically, you would check isEmpty before conducting a pop. This will ensure that an exception is not raised. Alternately, you can wrap the call in a try/catch block.
When conducting a peek, you will only be inspecting the top Node of the stack.
Typically, you would check isEmpty before conducting a peek. This will ensure that an exception is not raised. Alternately, you can wrap the call in a try/catch block.
ALGORITHM peek()
// INPUT <-- none
// OUTPUT <-- value of top Node in stack
// EXCEPTION if stack is empty
return top.value
Here is the pseudocode for isEmpty
ALGORITHM isEmpty()
// INPUT <-- none
// OUTPUT <-- boolean
return top = NULL
Common terminology for a queue is
First In First Out
This means that the first item in the queue will be the first item out of the queue.
Last In Last Out
This means that the last item in the queue will be the last item out of the queue.
When you add an item to a queue, you use the enqueue action. This is done with an O(1) operation in time because it does not matter how many other items live in the queue (n); it takes the same amount of time to perform the operation.
When you remove an item from a queue, you use the dequeue action. This is done with an O(1) operation in time because it doesn’t matter how many other items are in the queue, you are always just removing the front Node of the queue.
Typically, you would check isEmpty before conducting a dequeue. This will ensure that an exception is not raised. Alternately, you can wrap the call in a try/catch block.
When conducting a peek, you will only be inspecting the front Node of the queue.
Typically, you want to check isEmpty before conducting a peek. This will ensure that an exception is not raised. Alternately, you can wrap the call in a try/catch block.