# Move last element to front of a Linked-List in C++

In this tutorial, we will learn to move last element to front of a linked-list in C++.

For Example:

• If the given linked list is 1->2->3->4->5
• Then, the output is 5->1->2->3->4

Algorithm:

• Firstly, traverse the linked list till the last node.
• Secondly, we will use two pointers here.
• Now, use one pointer to store the address of the last node and second pointer to store the address of the second last node.
• Do following after the end of the loops.
• Now make the second last node as the last node.
• Then set next of the last node as head of the list.
• Finally, make the last node as the head of the list.
• The time complexity of the solution is O(s) where s is the total number of nodes in the list.

You may also like:

## Program to move the last element to the front of a given Linked-List in C++

Hence, the implementation is here.

Code:

```#include<iostream>
#include <bits/stdc++.h>
using namespace std;

// node class
class Node
{
public:
int dat;
Node *nex;
};

{
return;

Node *seclast = NULL;

while (last->nex != NULL)
{
seclast = last;
last = last->nex;
}

seclast->nex = NULL;

}

{
Node* newnode = new Node();

newnode->dat = newdata;

}

//print
void printl(Node *node)
{
while(node != NULL)
{
cout << node->dat << " ";
node = node->nex;
}
}

int main()
{
Node *strt = NULL;

push(&strt, 5);
push(&strt, 4);
push(&strt, 3);
push(&strt, 2);
push(&strt, 1);

printl(strt);
cout<<endl;
mvefront(&strt);
printl(strt);

return 0;
}

```

OUTPUT EXPLANATION

``` INPUT: 1 2 3 4 5
OUTPUT: 5 1 2 3 4```