0 / 0 / 0
Регистрация: 28.02.2019
Сообщений: 3
|
|
1
|
переворот стека
28.02.2019, 15:32. Показов 2541. Ответов 1
есть стек. нужно сделать функцию переворота стека со дна на вершину
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
| #include "stdafx.h"
#include <iostream>
#include <stack>
#include <ctime>
#include<algorithm>
using namespace std;
stack<int> s; //Створюємо стек під назвою S
void Empty() /*Перевіряємо, чи стек не порожній*/ {
if (s.empty()) // де s - назва стека, empty - повертає значення true, якщо стек пустий
cout << "Стек порожнiй!\n";
else cout << "Стек не порожнiй!\n";
}
void Pop() /*Видаляємо останній елемент із стека*/ {
if (s.empty())
cout << "Стек порожнiй!\n";
else
s.pop(); // s - назва стека, pop - видалення останнього елемента
}
void Push() /*Додаємо елемент в стек*/ {
int n;
cout << "Введiть число: ";
cin >> n;
system("cls");
s.push(n); // s - назва стека, push - додавання елемента в стек
}
void ShowD()/*Перегляд стеку із видаленням елементів*/ {
if (s.empty())
cout << "Стек порожнiй!\n";
else{
cout << "Ваш стек: ";
while (!s.empty()) {
cout << s.top() << " "; // s - назва стека, top - вершина стека
s.pop();
}
cout << endl;
}
}
void Rand() /*Додати 10 випадкових чисел в стек від 1 до 10 (Для швидкого заповнення стека)*/ {
int a = 0;
srand(time(NULL));
for (int i = 10; i >= 1; i--) {
a = rand() % 11; // де а - випадкове число від 0 до 10
s.push(a);
}
}
void delete_max() {
if (s.empty())
cout << "Стек порожнiй!\n";
else {
int max_one = s.top();
stack<int> temp;
while (!s.empty()) {
max_one = max(max_one, s.top());
temp.push(s.top());
s.pop();
}
while (!temp.empty()) {
if (temp.top() != max_one)
s.push(temp.top());
temp.pop();
}
}
}
void Top()/*Вивід останнього елемента*/ {
if (s.empty())
cout << "Стек порожнiй!\n";
else
cout << s.top() << "\n";
}
void Show()/*Перегляд стеку без видалення*/ {
if (s.empty())
cout << "Стек порожнiй!\n";
else {
stack<int>temp;
cout << "Ваш стек: ";
while (!s.empty()) {
temp.push(s.top());
cout << s.top() << " ";
s.pop();
}
while (!temp.empty()) {
s.push(temp.top());
temp.pop();
}
cout << endl;
}
}
void Clear() /*Очистка стека*/ {
if (s.empty())
cout << "Стек порожнiй!\n";
else
for (int i = 0; i < s.size() + 1; i++)
s.pop();
}
void menu()/* Меню :) */ {
cout << "1: Додати новий елемент\n";
cout << "2: Видалити останнiй елемент\n";
cout << "3: Додати 10 випадкових чисел в стек\n";
cout << "4: Показати стек (з видаленням елементiв!)\n";
cout << "5: Перевiрити чи стек не пустий\n";
cout << "6: Видалити максимальний елемент\n";
cout << "7: Показати останнiй елемент\n";
cout << "8: Показати стек (без видiлення елементiв)\n";
cout << "9: Очистити стек\n";
cout << "0: Вихiд\n";
}
int main() {
setlocale(LC_ALL, "ukr");
char key;
do {
menu();
cin >> key;
system("cls");
switch (key)
{
case '1': Push();
break;
case '2': Pop();
break;
case '3': Rand();
break;
case '4': ShowD();
break;
case '5': Empty();
break;
case '6': delete_max();
break;
case '7': Top();
break;
case '8': Show();
break;
case '9': Clear();
break;
case '0': exit(1);
}
} while (key != 0);
system("pause");
return 0;
} |
|
0
|