Написать функцию, которая удаляет из стека отрицательные элементы.
Остальной код:
struct Stack { // Декларация структурного типа
int info;
Stack * next;
} *begin, *t;
//------------ Декларации прототипов функций пользователя ----------
Stack* InStack(Stack*, int);
void View(Stack*);
void Del_All(Stack **);
//--------------- Функция добавления элемента в Стек ------------------------
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) {
cout << " " << t->info << endl;
t = t->next;
}
}
//----------------------- Функция освобождения памяти -----------------------
void Del_All(Stack **p) {
while (*p != NULL) {
t = *p;
*p = (*p)->next;
delete t;
}
}
void main()
{
int i, in, n, kod;
while (true) {
cout << "\n\tCreat - 1.\n\tAdd - 2.\n\tView - 3.\n\tDel - 4.\n\tEXIT – 0. : ";
19
cin >> kod;
switch (kod) {
case 1: case 2:
if (kod == 1 && begin != NULL) {
// Если создаем новый стек, должны освободить память, занятую предыдущим
cout << "Clear Memory!" << endl;
break;
}
cout << "Input kol = "; cin >> n;
for (i = 1; i <= n; i++) {
in = random(20);
begin = InStack(begin, in);
}
if (kod == 1) cout << "Create " << n << endl;
else cout << "Add " << n << endl;
break;
case 3: if (!begin) {
cout << "Stack Pyst!" << endl;
break;
}
cout << "--- Stack ---" << endl;
View(begin);
break;
case 4:
Del_All(&begin);
cout << "Memory Free!" << endl;
break;
case 0:
if (begin != NULL)
Del_All(&begin);
return; // Выход – EXIT
}
}
}

15 Июн 2019 в 19:44
252 +1
0
Ответы
1
void RemoveNegatives(Stack **p) {
Stack *prev = NULL;
Stack *current = *p;
while (current != NULL) {
if (current->info < 0) {
if (prev == NULL) {
*p = current->next;
delete current;
current = *p;
} else {
prev->next = current->next;
delete current;
current = prev->next;
}
} else {
prev = current;
current = current->next;
}
}
}

Использование функции RemoveNegatives:

case 5:
RemoveNegatives(&begin);
cout << "Negative elements removed from the stack!" << endl;
break;
21 Апр 2024 в 01:03
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир