Advertisement
Guest User

dynamic_table

a guest
Oct 20th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7. struct Node {
  8.     Node* prev = 0;
  9.     int year;
  10.     int ussr;
  11.     int usa;
  12.     int uk;
  13.     int fr;
  14. };
  15.  
  16. struct queue {
  17.     Node* beg;
  18.     Node* end;
  19.     int size;
  20. };
  21.  
  22. void init(queue& qu);
  23.  
  24. void push(queue& qu, int year, int ussr, int usa, int uk, int fr);
  25.  
  26. void pop(queue& qu);
  27.  
  28. void clear(queue& qu);
  29.  
  30.  
  31. int main() {
  32.  
  33.     queue qu;
  34.     init(qu);
  35.     int year,
  36.         ussr,
  37.         usa,
  38.         uk,
  39.         fr,
  40.         n;
  41.  
  42.     printf("Введите количество строк:\n");
  43.     scanf("%d", &n);
  44.  
  45.     for (int i = 0; i < n; ++i) {
  46.         printf("Введите год:\n");
  47.         scanf("%d", &year);
  48.         printf("Введите темпы роста СССР в %:\n");
  49.         scanf("%d", &ussr);
  50.         printf("Введите темпы роста США в %:\n");
  51.         scanf("%d", &usa);
  52.         printf("Введите темпы роста Англии в %:\n");
  53.         scanf("%d", &uk);
  54.         printf("Введите темпы роста Франции в %:\n");
  55.         scanf("%d", &fr);
  56.         push(qu, year, ussr, usa, uk, fr);
  57.     }
  58.  
  59.  
  60.     printf("Количество строк:%d\n", n);
  61.     //char str[256];
  62.     for (int i = 0; i < n; ++i) {
  63.         pop(qu);
  64.     }
  65.  
  66.  
  67.  
  68.     clear(qu);
  69.     return 0;
  70. }
  71.  
  72. void init(queue& qu) {              //initializing queue
  73.     qu.size = 0;
  74.     qu.beg = 0;
  75.     qu.end = 0;
  76. }
  77.  
  78. void push(queue& qu, int year, int ussr, int usa, int uk, int fr) {
  79.     Node* pv = new Node;            //new field (equals to string in table)
  80.  
  81.     pv -> year = year;              //pushing data
  82.     pv -> ussr = ussr;
  83.     pv -> usa = usa;
  84.     pv -> uk = uk;
  85.     pv -> fr = fr;
  86.  
  87.     ////////////////organizing queue//////////////////
  88.  
  89.     if (!qu.size) {                 //pushing when size = 0
  90.        qu.beg = pv;
  91.     } else if (qu.size > 0) {       //pushing when size > 0
  92.         qu.end -> prev = pv;
  93.     }
  94.     qu.end = pv;
  95.     ++qu.size;
  96. }
  97.  
  98. void pop(queue& qu) {
  99.     if (qu.size) {                  // size > 0
  100.         Node* pv = qu.beg;
  101.         qu.beg = qu.beg -> prev;
  102.         cout << pv -> year << endl; //printing deleted year
  103.         delete pv;
  104.         --qu.size;
  105.         if (!qu.size) {             //reiniting in case of deleting every field
  106.             init(qu);
  107.         }
  108.     }
  109. }
  110.  
  111. void clear(queue& qu) {
  112.     if (qu.size) {
  113.         int size = qu.size;
  114.         for (int i = 0; i < size; ++i) {
  115.             Node* pv = qu.beg;
  116.             qu.beg = qu.beg -> prev;
  117.             delete pv;
  118.             --qu.size;
  119.         }
  120.     }
  121.     init(qu);
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement