4. stack
Stack is a data structure that stores data
items. Data items when removed follow a
particular order i.e. the item that was
added to stack most recently will be
removed first (Last In First Out)
5. stack
Stack items cannot be accessed randomly regardless
of underlying data storage e.g. Array, Linked List
A stack can be imagined as a cylinder with one end
closed
All items can be added and/or removed from same
end (that is open)
Adding an item onto stack is called ‘push operation’
Removing an item from stack is called ‘pop operation’
7. Stack Operations …
Operation Description Pseudocode
int inspect_top(); Returns element at ‘top’
with removing it from Stack
If stack is non-empty, return the element immediately
beneath the ‘top’
Return -1 (indicator of Stack being empty) otherwise
void push(int); Adds the new element onto
the Stack
If Stack is full, mention it someway
Otherwise
Add new element to current position of ‘top’
Proceed ‘top’ position by 1
int pop(); Remove and return the
element at ‘top’ from Stack
If Stack is empty, mention it someway
Otherwise
Decrease ‘top’ by 1 (making currently top
element inaccessible for sub-sequent calls)
Return element at ‘top’ position
8. Stack using array … implementation
Implementation details and issues have been discussed during
class
10. Stack Operations …
Operation Description Pseudocode
StackUsingList() A constructor that creates an
underlying empty linked list
Create new instance of underlying linked list as ‘data’
int size(); Returns the number of
elements in the stack
Uses size() function from linked list instance ‘data’ to
return the number of elements in stack
int is_empty(); Returns TRUE if Stack
contains no element. It
returns FALSE otherwise.
Uses is_empty() function from underlying linked
list instance ‘data’ to return whether stack is empty
or not
int inspect_top() Returns the stack’s top
element without removing it
If ‘start’ of ‘data’ points to NULL
It returns -1
Otherwise
It returns value of data item in ‘start’
11. Stack Operations …
Operation Description Pseudocode
void push(int key); Adds the new element
onto the Stack
Creates new node using ‘key’
Adds it to ‘start’ of underlying linked list setting the
next pointer appropriately
int pop(); Remove and return the
element at start of
underlying list
If Stack is empty, return -1
Otherwise
Create a new node pointer ‘temp’ and point it
to start of underlying list
Move ‘start’ of underlying list to one step
forward
Set next of temp to NULL
Return data value of temp;
12. Stack using list … implementation
Implementation details and issues have been discussed during
class
13. Stack Operations(algorithms)
{
Repeat while true
[Menu option]
Write(“1: push”)
Write(“2: pop”)
Write(“3: peep top”)
Write(“4: peep stack”)
Write(“5: exit”)
[selection of option]
Selsct option opt
Option 1:
Write “Enter Value ”
Read value
Push(value)
Option 2:
Pop()
14. Option 3:
Peak top ()
Option 4:
Peak stack()
Option 5:
Exit
[end of selection option ]
[end of loop of step 1]
15. Push(value)
[check for stack overflow]
1. If Top== N
2. Write(“stack is full”)
3. Resturn
4. End if
5. Top =Top+1
6. Stack[Top]=value
7. Return
16. Pop ()
[check for stack underflow]
1. If Top==0
2. Write (“Stack is empty”)
3. Return
4. End if
5. Value = Stack[Top]
6. Delete Stack[Top]
7. Top =Top-1
8. Write (“Deleted value is ”, value)
9. Return
17. Peak Stack/ Stack Traversal
1. [check for underflow ]
if Top==0 then
write (“stack is empty”)
Return
end if
2. A=Top
3. Repeat while A>0
4. Write Stack[A]
5. A=A-1
[End of Loop]
6. Return
24. Pop()
1. [check for underflow]
If( top == -1) then
Write(“stack underflow”)
Return;
[End of if structure]
2. Temp = top ;
3. Top = top -> link
4. Write(“Deleted value is ”);
5. Delete (temp)
6. Return ;
25. Peak stack()
1. [check underflow]
If (top = 0) then
Write(“underflow’’)
Return;
[ End of if structure]
2. A = top
Repeat while (A< top)
Write(top[A])
A = A+1
[End of loop structure]
3. Return;
26. Peak top()
1. [check for underflow]
If(top == -1)
Write(“stack is empty”)
Return ;
[end of if structure]
2. Write (stack[top])
3. Return ;
27. Stack implementations
Array Implementation Linked List Implementation
Stack is empty when ‘top’ is equal to ZERO Stack is empty if underlying list’s ‘start’ points
to NULL
Static array with fixed size i.e. is_full() can be
implemented
Dynamic data structure i.e. elements are
allocated memory on runtime
A variable ‘top’ is required to keep track of
number of elements in stack i.e. constant time
execution
A linear time function size() returns the
number of elements in Stack
‘top’ keeps track of position where elements
are being pushed / popped from Stack
‘start’ of underlying linked list keeps track of
position where elements are pushed / popped
28. Stack uses
Stack is used by operating systems to implement function calls
Recursive functions can be converted into non-recursive functions using
stacks
Stacks can be used to evaluate mathematical expressions in postfix form
Undo mechanism in text editors make use of stack