Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <Windows.h>
- using namespace std;
- struct Node
- {
- int Value;
- Node* Next;
- };
- Node* stack;
- void Initial(Node*);
- void Output(Node*);
- void DeleteAll(Node*&);
- void AddElement(Node*&, int);
- void DeleteElement(Node*&, int);
- int main()
- {
- int q;
- do
- {
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- cout << "Выберите действие:" << endl;
- cout << "1. Ввести элементы стека" << endl;
- cout << "2. Вывести стек на экран" << endl;
- cout << "3. Удалить весь стек" << endl;
- cout << "4. Добавить новый элемент в стек" << endl;
- cout << "5. Удалить элемент из стека" << endl;
- cout << "0. Выход" << endl;
- cin >> q;
- if (q == 1)
- Initial(stack);
- else if (q == 2)
- Output(stack);
- else if (q == 3)
- DeleteAll(stack);
- else if (q == 4)
- {
- cout << "Введите значение нового элемента" << endl;
- int elem;
- cin >> elem;
- AddElement(stack, elem);
- }
- else if (q == 5)
- {
- int elem = 0;
- DeleteElement(stack, elem);
- }
- } while (q != 0);
- }
- void Initial(Node *stack)//инициализация стека
- {
- stack = nullptr;
- Node* tmp;//tmp - "рабочий" указатель
- int elem;
- cout << "Введите элементы списка:" << endl;
- cin >> elem;
- while (elem != 0)
- {
- tmp = new Node;
- tmp->Value = elem;
- tmp->Next = stack;
- stack = tmp;
- cin >> elem;
- }
- }
- void Output(Node *stack)//Вывод стека
- {
- if (stack == nullptr)
- cout << "Стек пуст" << endl;
- else
- {
- Node *tmp = stack;
- while (tmp != nullptr)
- {
- cout << '\t' << tmp->Value << endl;
- tmp = tmp->Next;
- }
- }
- }
- void DeleteAll(Node*& stack)
- {
- while (stack != nullptr)
- {
- Node* tmp = stack->Next;
- delete stack;
- stack = tmp;
- }
- }
- void AddElement(Node*& stack, int elem)
- {
- Node* tmp = new Node;
- tmp->Value = elem;
- tmp->Next = stack;
- stack = tmp;
- }
- void DeleteElement(Node*& stack, int elem)
- {
- if (stack == nullptr)
- cout << "Стек пуст" << endl;
- else
- {
- Node* tmp = new Node;
- elem = stack->Value;
- tmp = stack;
- stack = tmp->Next;
- delete tmp;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement