Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • DSA
  • Interview Problems on Linked List
  • Practice Linked List
  • MCQs on Linked List
  • Linked List Tutorial
  • Types of Linked List
  • Singly Linked List
  • Doubly Linked List
  • Circular Linked List
  • Circular Doubly Linked List
  • Linked List vs Array
  • Time & Space Complexity
  • Advantages & Disadvantages
Open In App
Next Article:
Move last element to front of a given Linked List
Next article icon

Move first element to end of a given Linked List

Last Updated : 19 Apr, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

Write a C function that moves first element to end in a given Singly Linked List. For example, if the given Linked List is 1->2->3->4->5, then the function should change the list to 2->3->4->5->1.

Algorithm: 

Traverse the list till last node. Use two pointers: one to store the address of last node(last) and other for address of first node(first). After the end of loop do following operations. 

  1. Make head as second node (*head_ref = first->next). 
  2. Set next of first as NULL (first->next = NULL). 
  3. Set next of last as first ( last->next = first) 

Steps to solve the problem:

1. check if *head_ref is equal to null or *head_ref ->next is null than return.

2. declare two node pointers first and second.

3. while last->next is not null:

           * update last to last->next.

4. update *head_ref to first->next.

5. point first->next to null.

6. point last->next to first.

Implementation:

C++




/* C++ Program to move first element to end
   in a given linked list */
#include <stdio.h>
#include <stdlib.h>
 
/* A linked list node */
struct Node {
    int data;
    struct Node* next;
};
 
/* We are using a double pointer head_ref
   here because we change head of the linked
   list inside this function.*/
void moveToEnd(struct Node** head_ref)
{
    /* If linked list is empty, or it contains
       only one node, then nothing needs to be
       done, simply return */
    if (*head_ref == NULL || (*head_ref)->next == NULL)
        return;
 
    /* Initialize first and last pointers */
    struct Node* first = *head_ref;
    struct Node* last = *head_ref;
 
    /*After this loop last contains address
    of last node in Linked List */
    while (last->next != NULL) {
        last = last->next;
    }
 
    /* Change the head pointer to point
       to second node now */
    *head_ref = first->next;
 
    /* Set the next of first as NULL */
    first->next = NULL;
 
    /* Set the next of last as first */
    last->next = first;
}
 
/* UTILITY FUNCTIONS */
/* Function to add a node at the beginning
   of Linked List */
void push(struct Node** head_ref, int new_data)
{
    struct Node* new_node = new Node;
    new_node->data = new_data;
    new_node->next = (*head_ref);
    (*head_ref) = new_node;
}
 
/* Function to print nodes in a given linked list */
void printList(struct Node* node)
{
    while (node != NULL) {
        printf("%d ", node->data);
        node = node->next;
    }
}
 
/* Driver program to test above function */
int main()
{
    struct Node* start = NULL;
 
    /* The constructed linked list is:
     1->2->3->4->5 */
    push(&start, 5);
    push(&start, 4);
    push(&start, 3);
    push(&start, 2);
    push(&start, 1);
 
    printf("\n Linked list before moving first to end\n");
    printList(start);
 
    moveToEnd(&start);
 
    printf("\n Linked list after moving first to end\n");
    printList(start);
 
    return 0;
}
 
 

Java




/* Java Program to move first element to end
in a given linked list */
class Sol
{
     
/* A linked list node */
static class Node
{
    int data;
    Node next;
};
 
/* We are using a double pointer head_ref
here because we change head of the linked
list inside this function.*/
static Node moveToEnd( Node head_ref)
{
    /* If linked list is empty, or it contains
    only one node, then nothing needs to be
    done, simply return */
    if (head_ref == null || (head_ref).next == null)
        return null;
 
    /* Initialize first and last pointers */
    Node first = head_ref;
    Node last = head_ref;
 
    /*After this loop last contains address
    of last node in Linked List */
    while (last.next != null)
    {
        last = last.next;
    }
 
    /* Change the head pointer to point
    to second node now */
    head_ref = first.next;
 
    /* Set the next of first as null */
    first.next = null;
 
    /* Set the next of last as first */
    last.next = first;
    return head_ref;
}
 
/* UTILITY FUNCTIONS */
/* Function to add a node at the beginning
of Linked List */
static Node push( Node head_ref, int new_data)
{
    Node new_node = new Node();
    new_node.data = new_data;
    new_node.next = (head_ref);
    (head_ref) = new_node;
    return head_ref;
}
 
/* Function to print nodes in a given linked list */
static void printList( Node node)
{
    while (node != null)
    {
        System.out.printf("%d ", node.data);
        node = node.next;
    }
}
 
/* Driver code */
public static void main(String args[])
{
    Node start = null;
 
    /* The constructed linked list is:
    1.2.3.4.5 */
    start = push(start, 5);
    start = push(start, 4);
    start = push(start, 3);
    start = push(start, 2);
    start = push(start, 1);
 
    System.out.printf("\n Linked list before moving first to end\n");
    printList(start);
 
    start = moveToEnd(start);
 
    System.out.printf("\n Linked list after moving first to end\n");
    printList(start);
}
}
 
// This code is contributed by Arnab Kundu
 
 

Python3




# Python3 Program to move first element to end
# in a given linked list
 
# A linked list node
class Node:
    def __init__(self):
        self.data = 0
        self.next = None
 
# We are using a double pointer head_ref
# here because we change head of the linked
# list inside this function.
def moveToEnd( head_ref) :
 
    # If linked list is empty, or it contains
    # only one node, then nothing needs to be
    # done, simply return
    if (head_ref == None or (head_ref).next == None) :
        return None
 
    # Initialize first and last pointers
    first = head_ref
    last = head_ref
 
    # After this loop last contains address
    # of last node in Linked List
    while (last.next != None) :
     
        last = last.next
     
    # Change the head pointer to point
    # to second node now
    head_ref = first.next
 
    # Set the next of first as None
    first.next = None
 
    # Set the next of last as first
    last.next = first
    return head_ref
 
# UTILITY FUNCTIONS
# Function to add a node at the beginning
# of Linked List
def push( head_ref, new_data) :
 
    new_node = Node()
    new_node.data = new_data
    new_node.next = (head_ref)
    (head_ref) = new_node
    return head_ref
 
# Function to print nodes in a given linked list
def printList(node) :
 
    while (node != None):
     
        print(node.data, end = " ")
        node = node.next
     
# Driver code
 
start = None
 
# The constructed linked list is:
#1.2.3.4.5
start = push(start, 5)
start = push(start, 4)
start = push(start, 3)
start = push(start, 2)
start = push(start, 1)
 
print("\n Linked list before moving first to end")
printList(start)
 
start = moveToEnd(start)
 
print("\n Linked list after moving first to end")
printList(start)
 
# This code is contributed by Arnab Kundu
 
 

C#




/* C# Program to move first element to end
in a given linked list */
using System;
 
class GFG
{
     
/* A linked list node */
public class Node
{
    public int data;
    public Node next;
};
 
/* We are using a double pointer head_ref
here because we change head of the linked
list inside this function.*/
static Node moveToEnd( Node head_ref)
{
    /* If linked list is empty, or it contains
    only one node, then nothing needs to be
    done, simply return */
    if (head_ref == null || (head_ref).next == null)
        return null;
 
    /* Initialize first and last pointers */
    Node first = head_ref;
    Node last = head_ref;
 
    /*After this loop last contains address
    of last node in Linked List */
    while (last.next != null)
    {
        last = last.next;
    }
 
    /* Change the head pointer to point
    to second node now */
    head_ref = first.next;
 
    /* Set the next of first as null */
    first.next = null;
 
    /* Set the next of last as first */
    last.next = first;
    return head_ref;
}
 
/* UTILITY FUNCTIONS */
/* Function to add a node at the beginning
of Linked List */
static Node push( Node head_ref, int new_data)
{
    Node new_node = new Node();
    new_node.data = new_data;
    new_node.next = (head_ref);
    (head_ref) = new_node;
    return head_ref;
}
 
/* Function to print nodes in a given linked list */
static void printList( Node node)
{
    while (node != null)
    {
        Console.Write("{0} ", node.data);
        node = node.next;
    }
}
 
/* Driver code */
public static void Main(String []args)
{
    Node start = null;
 
    /* The constructed linked list is:
    1.2.3.4.5 */
    start = push(start, 5);
    start = push(start, 4);
    start = push(start, 3);
    start = push(start, 2);
    start = push(start, 1);
 
    Console.Write("\n Linked list before moving first to end\n");
    printList(start);
 
    start = moveToEnd(start);
 
    Console.Write("\n Linked list after moving first to end\n");
    printList(start);
}
}
 
// This code is contributed by 29AjayKumar
 
 

Javascript




<script>
 
// JavaScript program to move first element
// to end in a given linked list
 
/* A linked list node */
class Node
{
    constructor()
    {
        this.data = 0;
        this.next = null;
    }
}
 
/* We are using a double pointer head_ref
here because we change head of the linked
list inside this function.*/
function moveToEnd(head_ref)
{
     
    /* If linked list is empty, or it contains
    only one node, then nothing needs to be
    done, simply return */
    if (head_ref == null || head_ref.next == null)
        return null;
     
    /* Initialize first and last pointers */
    var first = head_ref;
    var last = head_ref;
     
    /*After this loop last contains address
    of last node in Linked List */
    while (last.next != null)
    {
        last = last.next;
    }
     
    /* Change the head pointer to point
    to second node now */
    head_ref = first.next;
     
    /* Set the next of first as null */
    first.next = null;
     
    /* Set the next of last as first */
    last.next = first;
    return head_ref;
}
 
/* UTILITY FUNCTIONS */
/* Function to add a node at the beginning
of Linked List */
function push(head_ref, new_data)
{
    var new_node = new Node();
    new_node.data = new_data;
    new_node.next = head_ref;
    head_ref = new_node;
    return head_ref;
}
 
// Function to print nodes in
// a given linked list
function printList(node)
{
    while (node != null)
    {
        document.write(node.data + " ");
        node = node.next;
    }
}
 
// Driver code
var start = null;
 
// The constructed linked list is:
// 1.2.3.4.5
start = push(start, 5);
start = push(start, 4);
start = push(start, 3);
start = push(start, 2);
start = push(start, 1);
 
document.write("Linked list before " +
               "moving first to end<br>");
printList(start);
start = moveToEnd(start);
 
document.write("<br> Linked list after moving " +
               "first to end<br>");
printList(start);
 
// This code is contributed by rdtank
 
</script>
 
 
Output
 Linked list before moving first to end 1 2 3 4 5   Linked list after moving first to end 2 3 4 5 1 

Time Complexity: O(n) where n is the number of nodes in the given Linked List.
Auxiliary Space: O(1)

Method: Optimized Move First Element to End of Linked List

Steps:

  1. If the linked list is empty or has only one element, return the same linked list.
  2. Store the head node in a variable and set the head to the second node.
  3. Traverse the linked list until the last node.
  4. Set the next of the last node to the original head node.
  5. Set the next of the original head node to None.
  6. Return the modified linked list.

C++




#include <iostream>
 
using namespace std;
 
class Node {
public:
    int data;
    Node* next;
 
    Node(int data) {
        this->data = data;
        next = nullptr;
    }
};
 
class LinkedList {
public:
    Node* head;
 
    LinkedList() {
        head = nullptr;
    }
 
    void insert(int data) {
        Node* new_node = new Node(data);
        if (!head) {
            head = new_node;
        } else {
            Node* current_node = head;
            while (current_node->next) {
                current_node = current_node->next;
            }
            current_node->next = new_node;
        }
    }
 
    void display() {
        Node* current_node = head;
        while (current_node) {
            cout << current_node->data << " ";
            current_node = current_node->next;
        }
        cout << endl;
    }
 
    Node* move_first_to_end() {
        if (!head || !head->next) {
            return head;
        }
 
        Node* old_head = head;
        head = head->next;
 
        Node* current_node = head;
        while (current_node->next) {
            current_node = current_node->next;
        }
 
        current_node->next = old_head;
        old_head->next = nullptr;
 
        return head;
    }
};
 
int main() {
    LinkedList linked_list;
    linked_list.insert(1);
    linked_list.insert(2);
    linked_list.insert(3);
    linked_list.insert(4);
    linked_list.insert(5);
    cout << "Original Linked List: ";
    linked_list.display();
 
    linked_list.move_first_to_end();
    cout << "Modified Linked List: ";
    linked_list.display();
 
    return 0;
}
 
//This code is contributed by Akash Jha
 
 

Java




public class Main {
    public static void main(String[] args) {
        LinkedList linked_list = new LinkedList();
        linked_list.insert(1);
        linked_list.insert(2);
        linked_list.insert(3);
        linked_list.insert(4);
        linked_list.insert(5);
        System.out.print("Original Linked List: ");
        linked_list.display();
 
        linked_list.move_first_to_end();
        System.out.print("Modified Linked List: ");
        linked_list.display();
    }
 
    private static class Node {
        public int data;
        public Node next;
 
        public Node(int data) {
            this.data = data;
            this.next = null;
        }
    }
 
    private static class LinkedList {
        public Node head;
 
        public LinkedList() {
            this.head = null;
        }
 
        public void insert(int data) {
            Node new_node = new Node(data);
            if (this.head == null) {
                this.head = new_node;
            } else {
                Node current_node = this.head;
                while (current_node.next != null) {
                    current_node = current_node.next;
                }
                current_node.next = new_node;
            }
        }
 
        public void display() {
            Node current_node = this.head;
            while (current_node != null) {
                System.out.print(current_node.data + " ");
                current_node = current_node.next;
            }
            System.out.println();
        }
 
        public Node move_first_to_end() {
            if (this.head == null || this.head.next == null) {
                return this.head;
            }
 
            Node old_head = this.head;
            this.head = this.head.next;
 
            Node current_node = this.head;
            while (current_node.next != null) {
                current_node = current_node.next;
            }
 
            current_node.next = old_head;
            old_head.next = null;
 
            return this.head;
        }
    }
}
 
//This code is contributed by Akash Jha
 
 

Python3




class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
 
class LinkedList:
    def __init__(self):
        self.head = None
 
    def insert(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
        else:
            current_node = self.head
            while current_node.next:
                current_node = current_node.next
            current_node.next = new_node
 
    def display(self):
        current_node = self.head
        while current_node:
            print(current_node.data, end=' ')
            current_node = current_node.next
        print()
 
    def move_first_to_end(self):
        if not self.head or not self.head.next:
            return self.head
 
        old_head = self.head
        self.head = self.head.next
 
        current_node = self.head
        while current_node.next:
            current_node = current_node.next
 
        current_node.next = old_head
        old_head.next = None
 
        return self.head
linked_list = LinkedList()
linked_list.insert(1)
linked_list.insert(2)
linked_list.insert(3)
linked_list.insert(4)
linked_list.insert(5)
print("Original Linked List: ")
linked_list.display()
 
linked_list.move_first_to_end()
print("Modified Linked List: ")
linked_list.display()
 
 

C#




using System;
 
class Node
{
    public int data;
    public Node next;
 
    public Node(int data)
    {
        this.data = data;
        next = null;
    }
}
 
class LinkedList
{
    public Node head;
 
    public LinkedList()
    {
        head = null;
    }
 
    public void insert(int data)
    {
        Node new_node = new Node(data);
        if (head == null)
        {
            head = new_node;
        }
        else
        {
            Node current_node = head;
            while (current_node.next != null)
            {
                current_node = current_node.next;
            }
            current_node.next = new_node;
        }
    }
 
    public void display()
    {
        Node current_node = head;
        while (current_node != null)
        {
            Console.Write(current_node.data + " ");
            current_node = current_node.next;
        }
        Console.WriteLine();
    }
 
    public Node move_first_to_end()
    {
        if (head == null || head.next == null)
        {
            return head;
        }
 
        Node old_head = head;
        head = head.next;
 
        Node current_node = head;
        while (current_node.next != null)
        {
            current_node = current_node.next;
        }
 
        current_node.next = old_head;
        old_head.next = null;
 
        return head;
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        LinkedList linked_list = new LinkedList();
        linked_list.insert(1);
        linked_list.insert(2);
        linked_list.insert(3);
        linked_list.insert(4);
        linked_list.insert(5);
        Console.Write("Original Linked List: ");
        linked_list.display();
 
        linked_list.move_first_to_end();
        Console.Write("Modified Linked List: ");
        linked_list.display();
 
        Console.ReadLine();
    }
}
//This code is contributed by Akash Jha
 
 

Javascript




class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}
 
class LinkedList {
  constructor() {
    this.head = null;
  }
 
  insert(data) {
    let new_node = new Node(data);
    if (this.head == null) {
      this.head = new_node;
    } else {
      let current_node = this.head;
      while (current_node.next != null) {
        current_node = current_node.next;
      }
      current_node.next = new_node;
    }
  }
 
  display() {
    let current_node = this.head;
    while (current_node != null) {
      console.log(current_node.data + " ");
      current_node = current_node.next;
    }
    console.log();
  }
 
  move_first_to_end() {
    if (this.head == null || this.head.next == null) {
      return this.head;
    }
 
    let old_head = this.head;
    this.head = this.head.next;
 
    let current_node = this.head;
    while (current_node.next != null) {
      current_node = current_node.next;
    }
 
    current_node.next = old_head;
    old_head.next = null;
 
    return this.head;
  }
}
 
let linked_list = new LinkedList();
linked_list.insert(1);
linked_list.insert(2);
linked_list.insert(3);
linked_list.insert(4);
linked_list.insert(5);
console.log("Original Linked List: ");
linked_list.display();
 
linked_list.move_first_to_end();
console.log("Modified Linked List: ");
linked_list.display();
 
//This code is contributed by Akash Jha
 
 
Output
Original Linked List:  1 2 3 4 5  Modified Linked List:  2 3 4 5 1 

Time complexity: O(n) 

Auxiliary space: O(1) 



Next Article
Move last element to front of a given Linked List
author
aganjali10
Improve
Article Tags :
  • DSA
  • Linked List
Practice Tags :
  • Linked List

Similar Reads

  • Move last element to front of a given Linked List
    Given a singly linked list. The task is to move the last node to the front in a given List. Examples: Input: 2->5->6->2->1Output: 1->2->5->6->2Explanation : Node 1 moved to front. Input: 1->2->3->4->5Output: 5->1->2->3->4Explanation : Node 5 moved to f
    8 min read
  • Move last element to front of a given Linked List | Set 2
    Given a singly linked list and an integer K. The task is to append last K elements of the linked list to front. Examples: Input: 1 -> 2 -> 3 -> 4 -> 5 -> 6, k = 3 Output : 4 -> 5 -> 6 -> 1 -> 2 -> 3 Input: 1 -> 2 -> 3 -> 4 -> 5 -> 6, k = 7 Output : 6 -
    9 min read
  • Reverse first K elements of given linked list
    Given a pointer to the head node of a linked list and a number K, the task is to reverse the first K nodes of the linked list. We need to reverse the list by changing links between nodes. check also Reversal of a linked list Examples: Input : 1->2->3->4->5->6->7->8->9->10-
    9 min read
  • Move all occurrences of an element to end in a linked list
    Given a linked list and a key in it, the task is to move all occurrences of the given key to the end of the linked list, keeping the order of all other elements the same. Examples: Input : 1 -> 2 -> 2 -> 4 -> 3 key = 2 Output : 1 -> 4 -> 3 -> 2 -> 2 Input : 6 -> 6 -> 7
    15+ min read
  • Delete Nth node from the end of the given linked list
    Given a linked list and an integer N, the task is to delete the Nth node from the end of the given linked list. Examples: Input: 2 -> 3 -> 1 -> 7 -> NULL, N = 1 Output: 2 3 1Explanation: The created linked list is: 2 3 1 7 The linked list after deletion is: 2 3 1 Input: 1 -> 2 -> 3
    10 min read
  • First common element in two linked lists
    Given two Linked Lists, find the first common element between given linked list i.e., we need to find first node of the first list which is also present in the second list. Examples: Input : List1: 10->15->4->20 Lsit2: 8->4->2->10 Output : 10 Input : List1: 1->2->3->4 Lsit
    6 min read
  • Move the Kth Element in a Doubly Linked List to the End
    Given a doubly linked list and an integer K, you need to move the Kth element to the end of the list while maintaining the order of the other elements. Examples: Input: DLL: 2 <-> 6 <-> 3 <-> 8 <-> 11 <-> 23 <-> 7 -> NULL, K = 1Output: 6 <-> 3 <-> 8
    13 min read
  • Insert Node at the End of a Linked List
    Given a linked list, the task is to insert a new node at the end of the linked list. Examples: Input: LinkedList = 2 -> 3 -> 4 -> 5, NewNode = 1Output: LinkedList = 2 -> 3 -> 4 -> 5 -> 1 Input: LinkedList = NULL, NewNode = 1Output: LinkedList = 1 Approach:  Inserting at the end
    9 min read
  • Move the Kth element to the Front of a Doubly Linked List
    Given a doubly linked list and an integer K, you need to move the Kth element to the front of the list while maintaining the order of the other elements. Examples: Input: DLL: 2 <-> 6 <-> 3 <-> 8 <-> 11 <-> 23 <-> 7 -> NULL, K = 4Output: 8 <-> 2 <->
    11 min read
  • Delete a Linked List node at a given position
    Given a singly linked list and a position (1-based indexing), the task is to delete a linked list node at the given position. Note: Position will be valid (i.e, 1 <= position <= linked list length) Example: Input: position = 2, Linked List = 8->2->3->1->7Output: Linked List = 8-
    8 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences