CS261
DATA STRUCTURES & ALGORITHMS
(WEEK-5)
LECTURE-9 & 10
INTRODUCTION TO DATA STRUCTURES &
ALGORITHMS
Lecturer
Azka Aziz
Azka.a@scocs.edu.pk
Data structures & Algorithms
Lecture#09 Stacks
Course contents
Stack
Stack ADT
Stack Operations
Array Implementation
List Implementation
Applications
Sample Examples
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)
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’
Stack ADT … (implementing with Array)
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
Stack using array … implementation
Implementation details and issues have been discussed during
class
Stack ADT … (implementing with Linked List)
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’
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;
Stack using list … implementation
Implementation details and issues have been discussed during
class
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()
Option 3:
Peak top ()
Option 4:
Peak stack()
Option 5:
Exit
[end of selection option ]
[end of loop of step 1]
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
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
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
Data structures & Algorithms
Lecture#10 Stacks
Course contents
Stack
Stack ADT
Stack Operations
List Implementation
Applications
Sample Examples
Stack by using Link List
Struct stk
{
Int data;
Struct stk *link;
};
Struct stk *top = NULL;
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()
Option 3:
Peak top ()
Option 4:
Peak stack()
Option 5:
Exit
[end of selection option ]
[end of loop of step 1]
Push(Value)
Temp = new node
Temp -> data = value
Temp -> link = top
Top = temp
Return
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 ;
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;
Peak top()
1. [check for underflow]
If(top == -1)
Write(“stack is empty”)
Return ;
[end of if structure]
2. Write (stack[top])
3. Return ;
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
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

Data Structure.pptx

  • 1.
    CS261 DATA STRUCTURES &ALGORITHMS (WEEK-5) LECTURE-9 & 10 INTRODUCTION TO DATA STRUCTURES & ALGORITHMS Lecturer Azka Aziz [email protected]
  • 2.
    Data structures &Algorithms Lecture#09 Stacks
  • 3.
    Course contents Stack Stack ADT StackOperations Array Implementation List Implementation Applications Sample Examples
  • 4.
    stack Stack is adata 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 cannotbe 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’
  • 6.
    Stack ADT …(implementing with Array)
  • 7.
    Stack Operations … OperationDescription 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
  • 9.
    Stack ADT …(implementing with Linked List)
  • 10.
    Stack Operations … OperationDescription 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 … OperationDescription 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 whiletrue [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 stackoverflow] 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 forstack 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/ StackTraversal 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
  • 18.
    Data structures &Algorithms Lecture#10 Stacks
  • 19.
    Course contents Stack Stack ADT StackOperations List Implementation Applications Sample Examples
  • 20.
    Stack by usingLink List Struct stk { Int data; Struct stk *link; }; Struct stk *top = NULL;
  • 21.
    Stack Operations(algorithms) { Repeat whiletrue [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()
  • 22.
    Option 3: Peak top() Option 4: Peak stack() Option 5: Exit [end of selection option ] [end of loop of step 1]
  • 23.
    Push(Value) Temp = newnode Temp -> data = value Temp -> link = top Top = temp Return
  • 24.
    Pop() 1. [check forunderflow] 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. [checkunderflow] 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. [checkfor underflow] If(top == -1) Write(“stack is empty”) Return ; [end of if structure] 2. Write (stack[top]) 3. Return ;
  • 27.
    Stack implementations Array ImplementationLinked 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 isused 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