Guest User

Untitled

a guest
Jan 17th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.12 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. class node {
  5.   public :
  6.     int data;
  7.     node * next;
  8.     node(int data){
  9.         this-> data = data;
  10.         next = NULL;
  11.     }
  12.    
  13.    
  14. };
  15.  
  16. void insertHead(node* &head, int data){
  17.     node * n = new node(data);
  18.     n -> next = head;
  19.     head = n;
  20. }
  21.  
  22. void insert(node * &head, int data){
  23.     node * n = new node(data);
  24.     node * temp = head;
  25.     while(temp -> next != NULL){
  26.         temp = temp -> next;
  27.     }
  28.     temp->next = n;
  29.     n -> next = NULL;
  30.    
  31. }
  32.  
  33. void print(node * &head){
  34.    
  35.     node * temp = head;
  36.     while(temp != NULL){
  37.         cout<<temp->data<<" ";
  38.         temp = temp -> next;
  39.     }
  40.    
  41. }
  42.  
  43. void reverseK(node* &head, int k){
  44.      node * temp = head, *curr = head;
  45.      node *tempPointer = NULL;
  46.      node *prev = NULL;
  47.      node * null_node = NULL;
  48.      int count = 0, flag = 0;
  49.      while(temp != NULL){
  50.          prev = NULL;
  51.          count = 0;
  52.          
  53.          while(temp != NULL){
  54.              temp = curr->next;
  55.              curr->next= prev;
  56.              prev = curr;
  57.              curr = temp;
  58.              count++;
  59.              if(count == 1){
  60.                  tempPointer = prev;
  61.              }
  62.              if(count == k){
  63.                  flag++;
  64.                  break;  
  65.                  count = 0;
  66.              }  
  67.             // cout<<flag<<endl;
  68.              
  69.          }
  70.          
  71.          if(flag == 1){
  72.             null_node = head;
  73.             head =  prev;
  74.             // print(head);
  75.             // cout<<endl;
  76.             //cout<<"**"<<endl;
  77.          }
  78.          else{
  79.              null_node->next = prev;
  80.              null_node = tempPointer;
  81.             //   print(head);
  82.             // cout<<endl;
  83.          }
  84.          
  85.          
  86.      }
  87.    
  88.    
  89.    
  90. }
  91.  
  92. node * evenOdd(node * head){
  93.     node * start = NULL, *prev = head, *current = head;
  94.     current = head;
  95.     if(current == NULL)
  96.         return head;
  97.     while(current!= NULL){
  98.         if(current == head && current->data%2 == 1){
  99.              start = current;
  100.               prev = current;
  101.               current = current->next;
  102.         }
  103.         else if(current->data % 2 == 1){
  104.                 if(start == NULL){
  105.                     start = current;
  106.                     prev->next = current->next;
  107.                     current->next = head;
  108.                     head = current;
  109.                     current = prev->next;
  110.                    
  111.                 }else{
  112.                     prev->next = current->next;
  113.                     current->next = start->next;
  114.                     start->next = current;
  115.                     current = prev->next;
  116.                 }      
  117.         }
  118.         else{
  119.              prev = current;
  120.              current = prev->next;
  121.         }
  122.     }
  123.     return head;
  124. }
  125.  
  126. int main(){
  127.    
  128.     int n;
  129.     cin>>n;
  130.     int a;
  131.     node *head = NULL;
  132.    
  133.     for(int i = 0; i < n; i++){
  134.          cin>>a;
  135.         if(i == 0)
  136.             insertHead(head, a);
  137.         else
  138.             insert(head, a);
  139.     }
  140.     node * head1 = evenOdd(head);
  141.     print(head1);
  142.        return 0;
  143.    
  144. }
Add Comment
Please, Sign In to add comment