Advertisement
gasaichan

data_structures_shenanigans

Oct 20th, 2018
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <time.h>
  4. #include <clocale>
  5. #include <cstdlib>
  6. #include <conio.h>
  7.  
  8. // Намутим структуру данных, организованную в виде списка
  9. struct Node {
  10.     struct Node * root;
  11.     int a;
  12.     struct Node * next;
  13.  
  14.     void replace_all(int to_change, int value, Node *root) {
  15.         if (root != NULL) {
  16.             if (root->a == to_change) {
  17.                 root->a = value;
  18.             }
  19.             replace_all(to_change, value, root->next);
  20.         }
  21.     }
  22. } typedef Node;
  23.  
  24. int main()
  25. {
  26.     setlocale(LC_ALL, "Russian");
  27.     srand(time(0));
  28.  
  29.     // Заполняем список из 5 элементов случайными значениями
  30.     Node *prev = NULL,
  31.         *current;
  32.     printf("Заполняем список из 5 элементов случайными значениями\n");
  33.    
  34.     for (int i = 0; i < 5; i++) {
  35.         current = new Node;
  36.         current->a = rand() % 100;
  37.         current->next = prev;
  38.         prev = current;
  39.     }
  40.  
  41.     current->root = current;
  42.  
  43.  
  44.     printf("Полученный список: \n");
  45.  
  46.     Node * traverse_iterator = current->root;
  47.     while (traverse_iterator != NULL) {
  48.         printf("Элемент: %i\n", traverse_iterator->a);
  49.         traverse_iterator = traverse_iterator->next;
  50.     }
  51.  
  52.  
  53.     int to_change;
  54.     printf("Введите элемент, который необходимо заменить: ");
  55.     scanf_s("%i", &to_change);
  56.     printf("Введите элемент, на который будем менять: ");
  57.     int value;
  58.     scanf_s("%i", &value);
  59.  
  60.     current->replace_all(to_change, value, current);
  61.  
  62.     printf("Полученный список: \n");
  63.  
  64.     traverse_iterator = current->root;
  65.     while (traverse_iterator != NULL) {
  66.         printf("Элемент: %i\n", traverse_iterator->a);
  67.         traverse_iterator = traverse_iterator->next;
  68.     }
  69.  
  70.     _getch();
  71.  
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement