Написать функцию, которая удаляет из созданного стека отрицательные элементы.
Остальной код:
#include
struct Stack {
int info;
Stack * next;
} *begin, *t;
Stack* Push(Stack*, int);
void Peek(Stack*);
void Clear(Stack **);
Stack* Push(Stack *p, int in) {
Stack *t = new Stack;
t->info = in;
t->next = p;
return t;
}
void Peek(Stack *p) {
Stack *t = p;
while (t != NULL) {
std::cout << " " << t->info << std::endl;
t = t->next;
}
}
void Clear(Stack **p) {
while (*p != NULL) {
t = *p;
*p = (*p)->next;
delete t;
}
}
Stack* Sort(Stack *s)
{
}
int main()
{
setlocale(LC_ALL, "Russian");
int i, in, n, kod;
while (true)
{
std::cout << "1. Создать. 2. Добавить. 3. Просмотреть. 4. Удалить. 5. Удалить отрицательные элементы. 0. Выйти." << std::endl;
std::cin >> kod;
switch (kod) {
case 1: case 2:
if (kod == 1 && begin != NULL) {
std::cout << "Память очищена" << std::endl;
break;
}
std::cout << "Введите количество элементов: "; std::cin >> n;
std::cout << "Введите элементы стека: ";
for (i = 1; i <= n; i++) {
std::cin >> in;
begin = Push(begin, in);
}
break;
case 3: if (!begin) {
std::cout << "Стек пуст." << std::endl;
break;
}
std::cout << "Стек: " << std::endl;
Peek(begin);
break;
case 4:
Clear(&begin);
std::cout << "Память очищена. " << std::endl;
break;
case 5:
if (!begin) {
std::cout << "Стек пуст." << std::endl;
break;
}
std::cout << "Отсортировано " << std::endl;
Sort(begin);
break;
case 0:
if (begin != NULL)
Clear(&begin);
return 0;
}
}
}

30 Мая 2019 в 19:50
252 +1
1
Ответы
1
Stack* Sort(Stack *s)
{
Stack *current = s;
Stack *prev = NULL;
while (current != NULL) {
if (current->info < 0) {
if (prev == NULL) {
s = s->next;
delete current;
current = s;
} else {
prev->next = current->next;
delete current;
current = prev->next;
}
} else {
prev = current;
current = current->next;
}
}
return s;
}

Функция Sort будет искать отрицательные элементы в стеке и удалять их.

21 Апр в 02:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 416 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир