
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Move First Element to End of a Given Linked List in C++
<
Given a linked list, we have to move the first element to the end. Let's see an example.
Input
1 -> 2 -> 3 -> 4 -> 5 -> NULL
Output
2 -> 3 -> 4 -> 5 -> 1 -> NULL
Algorithm
Initialise the linked list.
- Return if the linked list is empty or it has single node.
Find the last node of the linked list.
Make the second node as the new head.
Update the links of first and last nodes.
Implementation
Following is the implementation of the above algorithm in C++
#include <bits/stdc++.h> using namespace std; struct Node { int data; struct Node* next; }; void moveFirstNodeToEnd(struct Node** head) { if (*head == NULL || (*head)->next == NULL) { return; } struct Node* firstNode = *head; struct Node* lastNode = *head; while (lastNode->next != NULL) { lastNode = lastNode->next; } *head = firstNode->next; firstNode->next = NULL; lastNode->next = firstNode; } void addNewNode(struct Node** head, int new_data) { struct Node* newNode = new Node; newNode->data = new_data; newNode->next = *head; *head = newNode; } void printLinkedList(struct Node* node) { while (node != NULL) { cout << node->data << "->"; node = node->next; } cout << "NULL" << endl; } int main() { struct Node* head = NULL; addNewNode(&head, 1); addNewNode(&head, 2); addNewNode(&head, 3); addNewNode(&head, 4); addNewNode(&head, 5); addNewNode(&head, 6); addNewNode(&head, 7); addNewNode(&head, 8); addNewNode(&head, 9); moveFirstNodeToEnd(&head); printLinkedList(head); return 0; }
Output
If you run the above code, then you will get the following result.
8->7->6->5->4->3->2->1->9->NULL
Advertisements