LIFO (Last-In-First-Out) approach in Programming

Prerequisites – FIFO (First-In-First-Out) approach in Programming, FIFO vs LIFO approach in Programming
LIFO is an abbreviation for last in, first out. It is a method for handling data structures where the first element is processed last and the last element is processed first.

Real life example:



In this example, following things are to be considered:

  • There is a bucket which holds balls.
  • Different types of balls are entered in the bucket.
  • The ball to enter the bucket last, will be taken out first.
  • The ball entering the bucket next to last will be taken out after the ball above it (the newer one).
  • In this way, the ball entering the bucket first will leave the bucket last.
  • Therefore, the Last ball (Blue) to enter the bucket gets removed first and the First ball (Red) to enter the bucket gets removed last.

This is known as Last-In-First-Out approach or LIFO.

Where is LIFO used:

  1. Data Structures –
    Certain data structures like Stacks and other variants of Stacks uses LIFO approach for processing data.

  2. Extracting latest information –
    Sometimes computers use LIFO when data is extracted from an array or data buffer. When it is required to get the most recent information entered, the LIFO approach is used.

Program Examples for LIFO –
Using Stack data structure:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to demonstrate 
// working of LIFO 
// using stack in C++ 
#include<bits/stdc++.h>
using namespace std;
  
// Pushing element on the top of the stack 
stack<int> stack_push(stack<int> stack) 
    for (int i = 0; i < 5; i++) 
    
        stack.push(i); 
    
    return stack;
  
// Popping element from the top of the stack 
stack<int> stack_pop(stack<int> stack) 
    cout << "Pop :"
  
    for (int i = 0; i < 5; i++) 
    
        int y = (int)stack.top();
        stack.pop();
        cout << (y) << endl; 
    
    return stack;
  
// Displaying element on the top of the stack 
void stack_peek(stack<int> stack) 
    int element = (int)stack.top(); 
    cout << "Element on stack top : " << element << endl; 
  
// Searching element in the stack 
void stack_search(stack<int> stack, int element) 
    int pos = -1,co = 0;
    while(stack.size() > 0)
    {
        co++;
        if(stack.top() == element)
        {
            pos = co;
            break;
        }
        stack.pop();
    }
  
    if (pos == -1) 
        cout << "Element not found" << endl; 
    else
        cout << "Element is found at position " << pos << endl; 
  
// Driver code
int main() 
    stack<int> stack ; 
  
    stack = stack_push(stack); 
    stack = stack_pop(stack); 
    stack = stack_push(stack); 
    stack_peek(stack); 
    stack_search(stack, 2); 
    stack_search(stack, 6); 
    return 0;
}
      
// This code is contributed by Arnab Kundu

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to demonstrate
// working of LIFO
// using Stack in Java
  
import java.io.*;
import java.util.*;
  
class GFG {
    // Pushing element on the top of the stack
    static void stack_push(Stack<Integer> stack)
    {
        for (int i = 0; i < 5; i++) {
            stack.push(i);
        }
    }
  
    // Popping element from the top of the stack
    static void stack_pop(Stack<Integer> stack)
    {
        System.out.println("Pop :");
  
        for (int i = 0; i < 5; i++) {
            Integer y = (Integer)stack.pop();
            System.out.println(y);
        }
    }
  
    // Displaying element on the top of the stack
    static void stack_peek(Stack<Integer> stack)
    {
        Integer element = (Integer)stack.peek();
        System.out.println("Element on stack top : " + element);
    }
  
    // Searching element in the stack
    static void stack_search(Stack<Integer> stack, int element)
    {
        Integer pos = (Integer)stack.search(element);
  
        if (pos == -1)
            System.out.println("Element not found");
        else
            System.out.println("Element is found at position " + pos);
    }
  
    public static void main(String[] args)
    {
        Stack<Integer> stack = new Stack<Integer>();
  
        stack_push(stack);
        stack_pop(stack);
        stack_push(stack);
        stack_peek(stack);
        stack_search(stack, 2);
        stack_search(stack, 6);
    }
}

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to demonstrate 
// working of LIFO 
// using Stack in C# 
using System;
using System.Collections.Generic;
  
class GFG
    // Pushing element on the top of the stack 
    static void stack_push(Stack<int> stack) 
    
        for (int i = 0; i < 5; i++)
        
            stack.Push(i); 
        
    
  
    // Popping element from the top of the stack 
    static void stack_pop(Stack<int> stack) 
    
        Console.WriteLine("Pop :"); 
  
        for (int i = 0; i < 5; i++)
        
            int y = (int)stack.Pop(); 
            Console.WriteLine(y); 
        
    
  
    // Displaying element on the top of the stack 
    static void stack_peek(Stack<int> stack) 
    
        int element = (int)stack.Peek(); 
        Console.WriteLine("Element on stack top : " + element); 
    
  
    // Searching element in the stack 
    static void stack_search(Stack<int> stack, int element) 
    
        bool pos = stack.Contains(element); 
  
        if (pos == false
            Console.WriteLine("Element not found"); 
        else
            Console.WriteLine("Element is found at position " + pos); 
    
  
    // Driver code
    public static void Main(String[] args) 
    
        Stack<int> stack = new Stack<int>(); 
  
        stack_push(stack); 
        stack_pop(stack); 
        stack_push(stack); 
        stack_peek(stack); 
        stack_search(stack, 2); 
        stack_search(stack, 6); 
    
  
// This code contributed by Rajput-Ji

chevron_right



Output:

Pop:
4
3
2
1
0
Element on stack top : 4
Element is found at position 3
Element not found 


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : andrew1234, Rajput-Ji



Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.