Facebook
From krul, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 280
  1. #include<iostream>
  2. #include<fstream>
  3. using namespace std;
  4.  
  5.  
  6. struct node
  7. {
  8.         int val;
  9.         node *next;
  10. };
  11.  
  12. void insert(node *&H, int x);
  13. void remove(node *&H);
  14. void show(node *H);
  15. int* ReadDataFromFile(int &size);
  16.  
  17. void swap(node *&H, node *x)
  18. {
  19.         if (x == NULL)
  20.         {
  21.                 node *p = H;
  22.                 node *tmp = p->next;
  23.                
  24.                 p->next = tmp->next;
  25.                 H = tmp;
  26.                 tmp->next = p;
  27.         }
  28.  
  29.         else
  30.         {
  31.                 node *p = x->next;
  32.                 node *tmp = p->next;
  33.                 p->next = tmp->next;
  34.                 tmp->next = p;
  35.                 x->next = tmp;
  36.         }
  37. }
  38. void bubble(node *&H)
  39. {
  40.         bool flag = true;
  41.         while (flag)
  42.         {
  43.                 node *p = H;
  44.                 node *tmp = NULL;
  45.                 flag = false;
  46.  
  47.                 if(p->val>p->next->val)
  48.                 {
  49.                         node *pusty = NULL;
  50.                         swap(H, pusty);
  51.                         flag = true;
  52.                 }
  53.  
  54.                 while (p->next->next != tmp)
  55.                 {
  56.                         if (p->next->val > p->next->next->val)
  57.                         {
  58.                                 swap(H, p);
  59.                                 flag = true;
  60.                         }
  61.                         p = p->next;
  62.                 }
  63.                 tmp = p;
  64.         }
  65. }
  66. node *getLast(node *H)
  67. {
  68.         if (!H) return false; // pusta lista
  69.         node *tmp = H;
  70.  
  71.         while (tmp->next != NULL)
  72.                 tmp = tmp->next;
  73.  
  74.         return tmp;
  75.  
  76. }
  77.  
  78. void zlacz(node *&H, node *&x)
  79.  
  80. {
  81.         node *p = getLast(H);
  82.         node *tmp = x;
  83.         p->next = tmp;
  84.  
  85. }
  86.  
  87.  
  88.  
  89. int main()
  90. {
  91.         node *H = NULL;
  92.         int size = 0;
  93.         int *t = ReadDataFromFile(size);
  94.        
  95.          node *listy[50];
  96.          for (int i = 0; i < 50; i++)
  97.                 listy[i] = NULL;
  98.  
  99.  
  100.          int i = 0;
  101.          for (int j = 0; j < 50; j++)
  102.                  for (int k = 0; k < 10; k++)
  103.                  {
  104.                          insert(listy[j], t[i]);
  105.                          i++;
  106.                  }
  107.                
  108.          cout << "Podzielone posortowane: " << endl;
  109.          for (int i = 0; i < 50; i++)
  110.          {
  111.                  bubble(listy[i]);
  112.                  show(listy[i]);
  113.          }
  114.  
  115.          cout << endl;
  116.          H = listy[0];
  117. for(int i=1; i<50; i++)
  118.          zlacz(H, listy[i]);
  119. bubble(H);
  120.          show(H);
  121.         system("PAUSE");
  122.         return 0;
  123. }
  124.  
  125. int* ReadDataFromFile(int &size)
  126. {
  127.         fstream czytaj;
  128.  
  129.         czytaj.open("liczby.txt");
  130.         czytaj >> size;
  131.         int*Data = new int[size];
  132.         for (int i = 0; i<size; i++)
  133.                 czytaj >> Data[i];
  134.         czytaj.close();
  135.         return Data;
  136. }
  137.  
  138. void insert(node *&H, int x)
  139. {
  140.         node *pom;
  141.         pom = new node;
  142.         pom->val = x;
  143.         pom->next = H;
  144.         H = pom;
  145. }
  146.  
  147. void remove(node *&H)
  148. {
  149.         if (H != NULL)
  150.         {
  151.                 node *pom = H;
  152.                 H = pom->next;
  153.                 delete pom;
  154.         }
  155. }
  156.  
  157. void show(node *H)
  158. {
  159.         node *pom = H;
  160.         cout << "HEAD ->";
  161.         while (pom != NULL)
  162.         {
  163.                 cout << pom->val << "->";
  164.                 pom = pom->next;
  165.         }
  166.         cout << "NULL" << endl;
  167. }