Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <iostream>
- #include <ctime>
- typedef struct NODE
- {
- int inf;
- NODE* link;
- };
- void createList(NODE*, const size_t size);//Создать список, проинициализировать его нулями
- void initList(NODE*, int min, int max);//Проинициализировать список случайными значениями от min до max
- void inputList(NODE*);//Ввести список с клавиатуры
- void showList(NODE*);//Вывести список на экран
- //Процедура из задания 4 - вставляет указанный элемент после каждого узла, значение которого превышает заданное число p
- int proc(NODE*, int, const int p);//Возвращает количество вставленных элементов
- int main()
- {
- setlocale(0, "Russian");
- srand(time(NULL));
- NODE* head = new NODE;
- size_t size = 0;
- printf("Введите размер списка: ");
- scanf("%d", &size);
- createList(head, size);
- inputList(head);
- showList(head);
- int element, p;
- printf("Введите элемент для вставки: ");
- scanf("%d", &element);
- printf("Введите p для сравнения: ");
- scanf("%d", &p);
- int n = proc(head, element, p);
- showList(head);
- printf("Добавлено %d элементов", n);
- system("pause");
- return 0;
- }
- void createList(NODE* head, const size_t size)
- {
- NODE* tmp = NULL;
- NODE* current = head;
- current->inf = 0;
- current->link = NULL;
- for (int i = 1; i != size; ++i)
- {
- tmp = new NODE;
- tmp->inf = 0;
- tmp->link = NULL;
- current->link = tmp;
- current = tmp;
- }
- }
- void inputList(NODE* head)
- {
- NODE* current = head;
- do
- {
- printf("Введите элемент: ");
- scanf("%d", ¤t->inf);
- current = current->link;
- } while (current);
- }
- void initList(NODE* head, int min, int max)
- {
- NODE* current = head;
- do
- {
- current->inf = rand() % (max - min + 1) + min;
- current = current->link;
- } while (current);
- }
- void showList(NODE* head)
- {
- if (!head)
- {
- puts("Список пуст");
- return;
- }
- NODE* current = head;
- do
- {
- printf("%3d", current->inf);
- current = current->link;
- } while (current);
- puts("");
- }
- int proc(NODE* head, int element, const int p)
- {
- if (!head)
- {
- puts("Список пуст");
- return 0;
- }
- NODE* current = head;
- NODE* tmp = NULL;
- unsigned count = 0;
- do
- {
- if (current->inf > p)
- {
- tmp = new NODE;
- tmp->inf = element;
- tmp->link = current->link;
- current->link = tmp;
- count++;
- }
- current = current->link;
- } while (current);
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement