Niloy007

SolutionD

Feb 24th, 2020
118
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct node {
  5.     char data;
  6.     struct node *next;
  7.     struct node *down;
  8. };
  9. typedef struct node Node;
  10.  
  11. Node *head = new Node();
  12.  
  13. void createNode(Node *head, int n, int k) {
  14.     Node *temp, *last, *flag;
  15.     int i = 0;
  16.     int j = 0;
  17.     flag = head;
  18.     last = head;
  19.     while(i < n) {
  20.         temp = new Node();
  21.         temp->data = NULL;
  22.         temp->next = NULL;
  23.         temp->down = NULL;
  24.         flag->down = temp;
  25.         flag = temp;
  26.         j = 0;
  27.         while (j < k) {
  28.             char input;
  29.             temp = new Node();
  30.             cin >> input;
  31.             //getchar();
  32.             temp->data = input;
  33.             temp->next = NULL;
  34.             last->next = temp;
  35.             last = temp;
  36.             j++;
  37.         }
  38.         last = flag;
  39.         i++;
  40.     }
  41. }
  42.  
  43.  
  44. Node *reverse(Node *head, int n, int k) {
  45.     Node *temp, *last, *flag, *downController, *flagDown, *newPointer, *headPointer;
  46.     temp = head;
  47.     headPointer = head;
  48.     downController = head;
  49.  
  50.     flag = new Node();
  51.     flagDown = flag;
  52.     newPointer = new Node();
  53.     flagDown->down = newPointer;
  54.     while(n--) {
  55.         last = flagDown;
  56.         int l = k;
  57.         while(l--) {
  58.             while(temp->next != NULL) {
  59.                 headPointer = temp;
  60.                 temp = temp->next;
  61.             }
  62.             last->next = temp;
  63.             last = last->next;
  64.             headPointer->next = NULL;
  65.             temp = downController;
  66.         }
  67.         newPointer = new Node();
  68.         flagDown->down = newPointer;
  69.         flagDown = flagDown->down;
  70.         temp = downController->down;
  71.         downController = downController->down;
  72.     }
  73.     return flag;
  74. }
  75.  
  76.  
  77. void display(Node *head) {
  78.     Node *temp, *last, *flag;
  79.     last = head;
  80.     flag = head;
  81.     temp = head;
  82.  
  83.     while (temp->down != NULL) {
  84.         while(temp->next != NULL) {
  85.             cout << temp->next->data << "";
  86.             temp = temp->next;
  87.         }
  88.         cout << "\n";
  89.         temp = last->down;
  90.         last = last->down;
  91.     }
  92. }
  93.  
  94.  
  95. int main() {
  96.     int n, k;
  97.     cin >> n >> k;
  98.     createNode(head, n, k);
  99.  
  100.     head = reverse(head, n, k);
  101.     display(head);
  102. }
RAW Paste Data