kutuzzzov

Задачи на тему list и stack

Oct 8th, 2025
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.28 KB | None | 0 0
  1. ### **Задачи на `std::list`**
  2.  
  3. #### **Задача 1: Добавление элементов в начало и конец списка**
  4. **Условие:** Напишите функцию, которая добавляет элементы в начало и конец списка.
  5.  
  6. #include <iostream>
  7. #include <list>
  8.  
  9. // Функция для добавления элементов
  10.  
  11. int main() {
  12.     std::list<int> numbers = {2, 3};
  13.     addElements(numbers, 1, 4);
  14.  
  15.     for (const auto& value : numbers) {
  16.         std::cout << value << " "; // Вывод: 1 2 3 4
  17.     }
  18.  
  19.     return 0;
  20. }
  21.  
  22. ---
  23.  
  24. #### **Задача 2: Удаление первого и последнего элементов**
  25. **Условие:** Напишите функцию, которая удаляет первый и последний элементы списка.
  26.  
  27. #include <iostream>
  28. #include <list>
  29.  
  30. // Функция для удаления элементов
  31.  
  32. int main() {
  33.     std::list<int> numbers = {1, 2, 3, 4};
  34.     removeFirstAndLast(numbers);
  35.  
  36.     for (const auto& value : numbers) {
  37.         std::cout << value << " "; // Вывод: 2 3
  38.     }
  39.  
  40.     return 0;
  41. }
  42.  
  43. ---
  44.  
  45. #### **Задача 3: Переворот списка**
  46. **Условие:** Напишите функцию, которая переворачивает список.
  47.  
  48. #include <iostream>
  49. #include <list>
  50.  
  51. // Функция для переворота списка
  52.  
  53. int main() {
  54.     std::list<int> numbers = {1, 2, 3, 4};
  55.     reverseList(numbers);
  56.  
  57.     for (const auto& value : numbers) {
  58.         std::cout << value << " "; // Вывод: 4 3 2 1
  59.     }
  60.  
  61.     return 0;
  62. }
  63.  
  64. ---
  65.  
  66. #### **Задача 4: Сортировка списка**
  67. **Условие:** Напишите функцию, которая сортирует список.
  68.  
  69. #include <iostream>
  70. #include <list>
  71.  
  72. // Функция для сортировки списка
  73.  
  74. int main() {
  75.     std::list<int> numbers = {4, 2, 5, 1, 3};
  76.     sortList(numbers);
  77.  
  78.     for (const auto& value : numbers) {
  79.         std::cout << value << " "; // Вывод: 1 2 3 4 5
  80.     }
  81.  
  82.     return 0;
  83. }
  84.  
  85. ---
  86.  
  87. #### **Задача 5: Удаление дубликатов из списка**
  88. **Условие:** Напишите функцию, которая удаляет дубликаты из списка.
  89.  
  90. #include <iostream>
  91. #include <list>
  92. #include <unordered_set>
  93.  
  94. // Функция для удаления дубликатов
  95.  
  96. int main() {
  97.     std::list<int> numbers = {1, 2, 2, 3, 4, 4, 5};
  98.     removeDuplicates(numbers);
  99.  
  100.     for (const auto& value : numbers) {
  101.         std::cout << value << " "; // Вывод: 1 2 3 4 5
  102.     }
  103.  
  104.     return 0;
  105. }
  106.  
  107. ---
  108.  
  109. #### **Задача 6: Объединение двух списков**
  110. **Условие:** Напишите функцию, которая объединяет два списка.
  111.  
  112. #include <iostream>
  113. #include <list>
  114.  
  115. // Функция для объединения списков
  116.  
  117. int main() {
  118.     std::list<int> list1 = {1, 2, 3};
  119.     std::list<int> list2 = {4, 5, 6};
  120.     mergeLists(list1, list2);
  121.  
  122.     for (const auto& value : list1) {
  123.         std::cout << value << " "; // Вывод: 1 2 3 4 5 6
  124.     }
  125.  
  126.     return 0;
  127. }
  128.  
  129. ---
  130.  
  131. #### **Задача 7: Поиск максимального элемента**
  132. **Условие:** Напишите функцию, которая находит максимальный элемент в списке.
  133.  
  134. #include <iostream>
  135. #include <list>
  136.  
  137. // Функция для поиска максимального элемента
  138.  
  139. int main() {
  140.     std::list<int> numbers = {1, 5, 3, 4, 2};
  141.     std::cout << "Max: " << findMax(numbers) << "\n"; // Вывод: Max: 5
  142.  
  143.     return 0;
  144. }
  145.  
  146. ---
  147.  
  148. #### **Задача 8: Удаление всех чётных чисел**
  149. **Условие:** Напишите функцию, которая удаляет все чётные числа из списка.
  150.  
  151. #include <iostream>
  152. #include <list>
  153.  
  154. // Функция для удаления чётных чисел
  155.  
  156. int main() {
  157.     std::list<int> numbers = {1, 2, 3, 4, 5, 6};
  158.     removeEvens(numbers);
  159.  
  160.     for (const auto& value : numbers) {
  161.         std::cout << value << " "; // Вывод: 1 3 5
  162.     }
  163.  
  164.     return 0;
  165. }
  166.  
  167. ---
  168.  
  169. #### **Задача 9: Проверка наличия элемента**
  170. **Условие:** Напишите функцию, которая проверяет, содержится ли элемент в списке.
  171.  
  172. #include <iostream>
  173. #include <list>
  174.  
  175. // Функция для проверки наличия элемента
  176.  
  177. int main() {
  178.     std::list<int> numbers = {1, 2, 3, 4, 5};
  179.     std::cout << std::boolalpha;
  180.     std::cout << "Contains 3? " << contains(numbers, 3) << "\n"; // Вывод: Contains 3? true
  181.  
  182.     return 0;
  183. }
  184.  
  185. ---
  186.  
  187. #### **Задача 10: Разделение списка на два**
  188. **Условие:** Напишите функцию, которая разделяет список на два: с чётными и нечётными числами.
  189.  
  190. #include <iostream>
  191. #include <list>
  192.  
  193. // Функция для разделения списка
  194.  
  195. int main() {
  196.     std::list<int> numbers = {1, 2, 3, 4, 5, 6};
  197.     std::list<int> evens, odds;
  198.     splitList(numbers, evens, odds);
  199.  
  200.     std::cout << "Evens: ";
  201.     for (const auto& value : evens) {
  202.         std::cout << value << " "; // Вывод: Evens: 2 4 6
  203.     }
  204.     std::cout << "\nOdds: ";
  205.     for (const auto& value : odds) {
  206.         std::cout << value << " "; // Вывод: Odds: 1 3 5
  207.     }
  208.  
  209.     return 0;
  210. }
  211.  
  212. ---
  213.  
  214. ### **Задачи на `std::stack`**
  215.  
  216. #### **Задача 1: Базовые операции со стеком**
  217. **Условие:** Напишите функцию, которая добавляет элементы в стек и выводит их.
  218.  
  219. #include <iostream>
  220. #include <stack>
  221.  
  222. // Функция для работы со стеком
  223.  
  224. int main() {
  225.     stackOperations();
  226.     return 0;
  227. }
  228. ```
  229.  
  230. ---
  231.  
  232. #### **Задача 2: Проверка пустоты стека**
  233. **Условие:** Напишите функцию, которая проверяет, пуст ли стек.
  234.  
  235. #include <iostream>
  236. #include <stack>
  237.  
  238. // Функция для проверки пустоты
  239.  
  240. int main() {
  241.     std::stack<int> stack;
  242.     std::cout << std::boolalpha;
  243.     std::cout << "Is empty? " << isEmpty(stack) << "\n"; // Вывод: Is empty? true
  244.  
  245.     stack.push(1);
  246.     std::cout << "Is empty? " << isEmpty(stack) << "\n"; // Вывод: Is empty? false
  247.  
  248.     return 0;
  249. }
  250.  
  251. ---
  252.  
  253. #### **Задача 3: Вычисление суммы элементов стека**
  254. **Условие:** Напишите функцию, которая вычисляет сумму элементов стека.
  255.  
  256. #include <iostream>
  257. #include <stack>
  258.  
  259. // Функция для вычисления суммы
  260.  
  261. int main() {
  262.     std::stack<int> stack;
  263.     stack.push(1);
  264.     stack.push(2);
  265.     stack.push(3);
  266.  
  267.     std::cout << "Sum: " << sumStack(stack) << "\n"; // Вывод: Sum: 6
  268.  
  269.     return 0;
  270. }
  271.  
  272. ---
  273.  
  274. #### **Задача 4: Проверка корректности скобок**
  275. **Условие:** Напишите функцию, которая проверяет, корректно ли расставлены скобки.
  276.  
  277. #include <iostream>
  278. #include <stack>
  279. #include <string>
  280.  
  281. // Функция для проверки скобок
  282.  
  283. int main() {
  284.     std::string str = "{[()]}";
  285.     std::cout << std::boolalpha;
  286.     std::cout << "Is valid? " << isValidParentheses(str) << "\n"; // Вывод: Is valid? true
  287.  
  288.     return 0;
  289. }
  290.  
  291. ---
  292.  
  293. #### **Задача 5: Обратный порядок элементов**
  294. **Условие:** Напишите функцию, которая переворачивает массив с помощью стека.
  295.  
  296. #include <iostream>
  297. #include <stack>
  298. #include <vector>
  299.  
  300. // Функция для переворота массива
  301.  
  302. int main() {
  303.     std::vector<int> arr = {1, 2, 3, 4};
  304.     std::vector<int> reversed = reverseArray(arr);
  305.  
  306.     for (int value : reversed) {
  307.         std::cout << value << " "; // Вывод: 4 3 2 1
  308.     }
  309.  
  310.     return 0;
  311. }
  312.  
  313. ---
  314.  
  315. #### **Задача 6: Проверка палиндрома**
  316. **Условие:** Напишите функцию, которая проверяет, является ли строка палиндромом, используя стек.
  317.  
  318. #include <iostream>
  319. #include <stack>
  320. #include <string>
  321.  
  322. // Функция для проверки палиндрома
  323.  
  324. int main() {
  325.     std::string str = "level";
  326.     std::cout << std::boolalpha;
  327.     std::cout << "Is palindrome? " << isPalindrome(str) << "\n"; // Вывод: Is palindrome? true
  328.  
  329.     return 0;
  330. }
  331.  
  332. ---
  333.  
  334. #### **Задача 7: Удаление элементов до определённого значения**
  335. **Условие:** Напишите функцию, которая удаляет элементы из стека до определённого значения.
  336.  
  337. #include <iostream>
  338. #include <stack>
  339.  
  340. // Функция для удаления элементов
  341.  
  342. int main() {
  343.     std::stack<int> stack;
  344.     stack.push(1);
  345.     stack.push(2);
  346.     stack.push(3);
  347.     stack.push(4);
  348.  
  349.     removeUntil(stack, 3);
  350.  
  351.     while (!stack.empty()) {
  352.         std::cout << stack.top() << " "; // Вывод: 3
  353.         stack.pop();
  354.     }
  355.  
  356.     return 0;
  357. }
  358.  
  359. ---
  360.  
  361. #### **Задача 8: Минимальный элемент в стеке**
  362. **Условие:** Напишите функцию, которая находит минимальный элемент в стеке.
  363.  
  364. #include <iostream>
  365. #include <stack>
  366.  
  367. // Функция для поиска минимума
  368.  
  369. int main() {
  370.     std::stack<int> stack;
  371.     stack.push(5);
  372.     stack.push(3);
  373.     stack.push(8);
  374.  
  375.     std::cout << "Min: " << findMin(stack) << "\n"; // Вывод: Min: 3
  376.  
  377.     return 0;
  378. }
  379.  
  380. ---
  381.  
  382. #### **Задача 9: Объединение двух стеков**
  383. **Условие:** Напишите функцию, которая объединяет два стека в один.
  384.  
  385. #include <iostream>
  386. #include <stack>
  387.  
  388. // Функция для объединения стеков
  389.  
  390. int main() {
  391.     std::stack<int> stack1;
  392.     stack1.push(1);
  393.     stack1.push(2);
  394.  
  395.     std::stack<int> stack2;
  396.     stack2.push(3);
  397.     stack2.push(4);
  398.  
  399.     std::stack<int> merged = mergeStacks(stack1, stack2);
  400.  
  401.     while (!merged.empty()) {
  402.         std::cout << merged.top() << " "; // Вывод: 4 3 2 1
  403.         merged.pop();
  404.     }
  405.  
  406.     return 0;
  407. }
  408.  
  409. ---
  410.  
  411. #### **Задача 10: Проверка сбалансированности стека**
  412. **Условие:** Напишите функцию, которая проверяет, содержит ли стек только положительные числа.
  413.  
  414. #include <iostream>
  415. #include <stack>
  416.  
  417. // Функция для проверки сбалансированности
  418.  
  419. int main() {
  420.     std::stack<int> stack;
  421.     stack.push(1);
  422.     stack.push(2);
  423.     stack.push(-3);
  424.  
  425.     std::cout << std::boolalpha;
  426.     std::cout << "Is positive? " << isPositive(stack) << "\n"; // Вывод: Is positive? false
  427.  
  428.     return 0;
  429. }
Advertisement
Add Comment
Please, Sign In to add comment