Guest User

Untitled

a guest
Jan 18th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 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. node* cycle(node* head){
  92.     node * f = head;
  93.     node * s = head;
  94.    // cout<<" **"<<f->data<<" "<<s->data<<endl;
  95.     while(f != NULL and f -> next != NULL){
  96.        // cout<<" **"<<f->data<<" "<<f->next->data<<" "<<f->next->next->data<<"**"<<endl;
  97.         f = f->next->next;
  98.         s = s->next;
  99.        
  100.        // cout<<s->data<<" "<<f->data<<endl;
  101.         if(f == s){
  102.             f->next = NULL;
  103.             return head;
  104.         }
  105.     }
  106.     return head;
  107. }
  108. int main(){
  109.    int n;
  110.    node *head = NULL, *Head = NULL;
  111.    int i = 0;
  112.   // cin>>n;
  113.    while( n != -1){
  114.        
  115.        if(i == 0)
  116.             insertHead(head, n);
  117.         else
  118.             insert(head, n);
  119.         cin>>n;
  120.         i++;
  121.    }
  122.    node * h1 = cycle(head);
  123.    print(h1);
  124.        return 0;
  125.    
  126. }
Add Comment
Please, Sign In to add comment