Put Even Position Nodes after Odd Position Nodes in c++ program

 

Here is an example C++ program that implements the algorithm for separating even position nodes from odd position nodes in a singly linked list:

#include <iostream>
  using namespace std;
 // Node structure for a singly linked list 
 struct Node {
 int data; Node* next;
 };
 // Function to create a new node with the given data 
Node* newNode(int data) {
 Node* temp = new Node;
 temp->data = data;
 temp->next = NULL;
 return temp;
 }  
// Function to separate even and odd position nodes 
void separateEvenOdd(Node* head) {
 // Initialize dummy nodes for even and odd lists 
 Node* evenHead = newNode(0);
 Node* oddHead = newNode(0); 
 Node* even = evenHead;
 Node* odd = oddHead;
 int position = 1;
 // Start at position 1 (odd) // Iterate through the original list
  while (head) { 
 if (position % 2 == 0) { 
 // Add node to even list 
 even->next = head;
 even = even->next;
 } else
 // Add node to odd list 
 odd->next = head;
 odd = odd->next; 
 } 
 head = head->next;
 position++;
 } 
 // End the lists
  even->next = NULL;
 odd->next = NULL;
 // Print the even list 
 cout << "Even Position Nodes:" << endl;
 even = evenHead->next;
 while (even) { 
 cout << even->data << " ";
 even = even->next;
 }
 cout << endl; 
 // Print the odd list
  cout << "Odd Position Nodes:" << endl;
 odd = oddHead->next;
 while (odd) { cout << odd->data << " "
 odd = odd->next;
 } cout << endl;
 int main()
 // Create a test linked list 
 Node* head = newNode(1);
 head->next = newNode(2);
 head->next->next = newNode(3);
 head->next->next->next = newNode(4);
 head->next->next->next->next = newNode(5);
 // Separate even and odd position nodes 
 separateEvenOdd(head);
 return 0;
 }

In this program, we have defined a Node structure for a singly linked list and a newNode function for creating new nodes with the given data. We also have a separateEvenOdd function that takes the head of the original list as an argument.

The separateEvenOdd function starts by initializing two dummy nodes for the even and odd lists, and two pointers – even and odd – that will be used to add nodes to these lists. It also initializes a counter, position, which starts at 1 (odd).

The function then iterates through the original list using a while loop. For each node, it checks the value of position modulo 2. If the result is 0, it adds the current node to the even list by updating the even pointer. If

Put Even Position Nodes after Odd Position Nodes in c++ program