FIFO (First-In-First-Out) approach in Programming Last Updated : 06 Dec, 2022 Summarize Comments Improve Suggest changes Share Like Article Like Report FIFO is an abbreviation for first in, first out. It is a method for handling data structures where the first element is processed first and the newest element is processed last. Real-life example: In this example, following things are to be considered: There is a ticket counter where people come, take tickets and go.People enter a line (queue) to get to the Ticket Counter in an organized manner.The person to enter the queue first, will get the ticket first and leave the queue.The person entering the queue next will get the ticket after the person in front of himIn this way, the person entering the queue last will the tickets lastTherefore, the First person to enter the queue gets the ticket first and the Last person to enter the queue gets the ticket last. This is known as First-In-First-Out approach or FIFO. Where is FIFO used: Data Structures:Certain data structures like Queue and other variants of Queue uses FIFO approach for processing data. Disk scheduling:Disk controllers can use the FIFO as a disk scheduling algorithm to determine the order in which to service disk I/O requests. Communications and networking"Communication network bridges, switches and routers used in computer networks use FIFOs to hold data packets en route to their next destination. Program Examples for FIFO Program 1: Queue C++ // C++ program to demonstrate // working of FIFO // using Queue interface in C++ #include<bits/stdc++.h> using namespace std; // print the elements of queue void print_queue(queue<int> q) { while (!q.empty()) { cout << q.front() << " "; q.pop(); } cout << endl; } // Driver code int main() { queue<int> q ; // Adds elements {0, 1, 2, 3, 4} to queue for (int i = 0; i < 5; i++) q.push(i); // Display contents of the queue. cout << "Elements of queue-"; print_queue(q); // To remove the head of queue. // In this the oldest element '0' will be removed int removedele = q.front(); q.pop(); cout << "removed element-" << removedele << endl; print_queue(q); // To view the head of queue int head = q.front(); cout << "head of queue-" << head << endl; // Rest all methods of collection interface, // Like size and contains can be used with this // implementation. int size = q.size(); cout << "Size of queue-" << size; return 0; } // This code is contributed by Arnab Kundu Java // Java program to demonstrate // working of FIFO // using Queue interface in Java import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { Queue<Integer> q = new LinkedList<>(); // Adds elements {0, 1, 2, 3, 4} to queue for (int i = 0; i < 5; i++) q.add(i); // Display contents of the queue. System.out.println("Elements of queue-" + q); // To remove the head of queue. // In this the oldest element '0' will be removed int removedele = q.remove(); System.out.println("removed element-" + removedele); System.out.println(q); // To view the head of queue int head = q.peek(); System.out.println("head of queue-" + head); // Rest all methods of collection interface, // Like size and contains can be used with this // implementation. int size = q.size(); System.out.println("Size of queue-" + size); } } Python3 # Python program to demonstrate # working of FIFO # using Queue interface in Python q = [] # Adds elements {0, 1, 2, 3, 4} to queue for i in range(5): q.append(i) # Display contents of the queue. print("Elements of queue-" , q) # To remove the head of queue. # In this the oldest element '0' will be removed removedele = q.pop(0) print("removed element-" , removedele) print(q) # To view the head of queue head = q[0] print("head of queue-" , head) # Rest all methods of collection interface, # Like size and contains can be used with this # implementation. size = len(q) print("Size of queue-" , size) # This code is contributed by patel2127. C# // C# program to demonstrate // working of FIFO using System; using System.Collections.Generic; public class QueueExample { public static void Main(String[] args) { Queue<int> q = new Queue<int>(); // Adds elements {0, 1, 2, 3, 4} to queue for (int i = 0; i < 5; i++) q.Enqueue(i); // Display contents of the queue. Console.Write("Elements of queue-"); foreach(int s in q) Console.Write(s + " "); // To remove the head of queue. // In this the oldest element '0' will be removed int removedele = q.Dequeue(); Console.Write("\nremoved element-" + removedele + "\n"); foreach(int s in q) Console.Write(s + " "); // To view the head of queue int head = q.Peek(); Console.Write("\nhead of queue-" + head); // Rest all methods of collection interface, // Like size and contains can be used with this // implementation. int size = q.Count; Console.WriteLine("\nSize of queue-" + size); } } // This code has been contributed by 29AjayKumar JavaScript <script> // JavaScript program to demonstrate // working of FIFO // using Queue interface in Java let q = []; // Adds elements {0, 1, 2, 3, 4} to queue for (let i = 0; i < 5; i++) q.push(i); // Display contents of the queue. document.write("Elements of queue-[" + q.join(", ")+"]<br>"); // To remove the head of queue. // In this the oldest element '0' will be removed let removedele = q.shift(); document.write("removed element-" + removedele+"<br>"); document.write("["+q.join(", ")+"]<br>"); // To view the head of queue let head = q[0]; document.write("head of queue-" + head+"<br>"); // Rest all methods of collection interface, // Like size and contains can be used with this // implementation. let size = q.length; document.write("Size of queue-" + size+"<br>"); // This code is contributed by avanitrachhadiya2155 </script> OutputElements of queue-0 1 2 3 4 removed element-0 1 2 3 4 head of queue-1 Size of queue-4 Complexities Analysis: Time Complexity: O(N)Space Complexity: O(N) Comment More infoAdvertise with us Next Article FIFO (First-In-First-Out) approach in Programming C code_r Follow Improve Article Tags : DSA Similar Reads DSA Tutorial - Learn Data Structures and Algorithms DSA (Data Structures and Algorithms) is the study of organizing data efficiently using data structures like arrays, stacks, and trees, paired with step-by-step procedures (or algorithms) to solve problems effectively. Data structures manage how data is stored and accessed, while algorithms focus on 7 min read Quick Sort QuickSort is a sorting algorithm based on the Divide and Conquer that picks an element as a pivot and partitions the given array around the picked pivot by placing the pivot in its correct position in the sorted array. It works on the principle of divide and conquer, breaking down the problem into s 12 min read Merge Sort - Data Structure and Algorithms Tutorials Merge sort is a popular sorting algorithm known for its efficiency and stability. It follows the divide-and-conquer approach. It works by recursively dividing the input array into two halves, recursively sorting the two halves and finally merging them back together to obtain the sorted array. Merge 14 min read Data Structures Tutorial Data structures are the fundamental building blocks of computer programming. They define how data is organized, stored, and manipulated within a program. Understanding data structures is very important for developing efficient and effective algorithms. What is Data Structure?A data structure is a st 2 min read Bubble Sort Algorithm Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in the wrong order. This algorithm is not suitable for large data sets as its average and worst-case time complexity are quite high.We sort the array using multiple passes. After the fir 8 min read Breadth First Search or BFS for a Graph Given a undirected graph represented by an adjacency list adj, where each adj[i] represents the list of vertices connected to vertex i. Perform a Breadth First Search (BFS) traversal starting from vertex 0, visiting vertices from left to right according to the adjacency list, and return a list conta 15+ min read Binary Search Algorithm - Iterative and Recursive Implementation Binary Search Algorithm is a searching algorithm used in a sorted array by repeatedly dividing the search interval in half. The idea of binary search is to use the information that the array is sorted and reduce the time complexity to O(log N). Binary Search AlgorithmConditions to apply Binary Searc 15 min read Insertion Sort Algorithm Insertion sort is a simple sorting algorithm that works by iteratively inserting each element of an unsorted list into its correct position in a sorted portion of the list. It is like sorting playing cards in your hands. You split the cards into two groups: the sorted cards and the unsorted cards. T 9 min read Array Data Structure Guide In this article, we introduce array, implementation in different popular languages, its basic operations and commonly seen problems / interview questions. An array stores items (in case of C/C++ and Java Primitive Arrays) or their references (in case of Python, JS, Java Non-Primitive) at contiguous 4 min read Sorting Algorithms A Sorting Algorithm is used to rearrange a given array or list of elements in an order. For example, a given array [10, 20, 5, 2] becomes [2, 5, 10, 20] after sorting in increasing order and becomes [20, 10, 5, 2] after sorting in decreasing order. There exist different sorting algorithms for differ 3 min read Like