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
| #include "stdafx.h"
//#include <stack>
#include <iostream>
#include <cstdio>
#include <cstdint>
struct Stack {
int info;
Stack *next;
} *begin, *t;
struct Stack2 {
int info;
Stack2 *next;
} *begin2, *tt;
Stack* InStack(Stack *p, int in) {
Stack *t = new Stack;
t->info = in;
t->next = p;
return t;
}
void View(Stack *p) {
Stack *t = p;
while (t != NULL) {
printf_s("%d ", t->info);
t = t->next;
}
}
Stack* OutStack(Stack* p, int *out) {
Stack *t = p; // Устанавливаем указатель t на вершину p
*out = p->info;
p = p->next; // Переставляем вершину p на следующий
delete t; // Удаляем бывшую вершину t
return p; // Возвращаем новую вершину p
}
void Del_All(Stack **p) { //освобождение памяти
Stack *t;
while (*p != NULL) {
t = *p;
*p = (*p)->next;
delete t;
}
}
void Sort_p(Stack **p) {
int min = begin->info;
Stack *s;
for (s = begin; s != NULL; s = s->next)
{
if (s->info > min) {
min = s->info;
}
}
int max = begin->info;
for (s = begin; s != NULL; s = s->next)
{
if (s->info < max) {
max = s->info;
}
}
puts("Максимальный-");
printf("%d\n", min);
puts("Минимальный-");
printf("%d\n", max);
}
int main()
{
setlocale(LC_ALL, "rus");
int a, i, n, in, kod;
while (true) {
puts("\n Создать – 1\n Добавить – 2\n Просмотреть – 3\n Удаляем - 4\n Решение - 5\n Выход - 0\n ");
scanf_s("%d", &kod);
switch (kod) {
case 1: case 2:
if (kod == 1 && begin != NULL) {
puts("\nClear Memory!\n");
break;
}
puts("\n Количество = ");
scanf_s("%d", &n);
for (i = 1; i <= n; i++) {
in = rand() % 20 + 0;
begin = InStack(begin, in);
}
if (kod == 1) {
puts("Создаем");
scanf_s("%d", &n);
}
else {
puts("Добавляем");
scanf_s("%d", &n);
}
break;
case 3:
if (!begin) {
puts("\n\t---Стек пуст---\n");
break;
}
puts("---Стек---");
View(begin);
break;
case 4:
Del_All(&begin);
puts("\t---Память очищена---");
break;
case 5:
Sort_p(&begin);
break;
case 0:
if (begin != NULL)
Del_All(&begin);
exit(0);
break;
}
}
return 0;
} |