#include "stdafx.h" #include #include using namespace std; struct STACK { int num; STACK *next; }; STACK * push(STACK*, int);// добавление элементов в стек STACK * pop(STACK*);// удаление элементов стека void Process(STACK*);// разделение стека на два стека - с отрицательными и положительными эллементами void printstack(STACK*);// вывод стека int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int quentity, elem; STACK* top = 0;// NULL cout << "Введите размер стека: "; cin >> quentity; cout << "Введите элементы: "<<"\n"; for (int i = 0; i < quentity; i++) { cin >> elem; top = push(top, elem); } cout << "Cтек: "; printstack(top);// вывод введённого стека cout << endl; Process(top);// обработка стека - разделение его на два стека system("pause"); return 0; } STACK * push(STACK* top, int what)// добавление в стек { STACK * pv = new STACK; pv->num = what; pv->next = top; return pv; } void printstack(STACK* top)// вывод стека { while (top) { cout << top->num << " "; top = top->next; } cout << endl; } void Process(STACK* top) { STACK *pol = NULL; STACK *otr = NULL; while (top) { if (top->num >= 0)// если отрицательное число pol = push(pol, top->num); else otr = push(otr, top->num); top = top->next; } cout << "Стек ПОЛОЖИТЕЛЬНЫХ эллементов: "; printstack(pol);// вывод стека положительных эллементов cout << endl; cout << "Стек ОТРИЦАТЕЛЬНЫХ эллементов: "; printstack(otr); cout << endl; } STACK * pop(STACK * top)// удаление эллементов стека { STACK * pv = top->next; delete top; return pv; }