Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <ctime>
- #include <stdlib.h>
- using namespace std;
- //---Декларация структурного типа---//
- struct Stack { //
- int info; //
- Stack* next; //
- } *begin, *t; //
- //---Декларация прототипов функций пользователя---//
- Stack* InStack(Stack**, int); // Функция формирования элементов стека
- void View(Stack*); // Функция просмотра информации стека
- void Del_All(Stack**); // Функция очистки памяти
- void Task(Stack **); // Функция замены местами крайних элементов
- int main()
- {
- int i, in, n, kod;
- Stack *begin = NULL;
- while (true) {
- cout << "\n\tCreate - 1.\n\tAdd - 2.\n\tView - 3.\n\tDel - 4.\n\tTask -5\n\tEXIT - 0.\n\t";
- cin >> kod;
- switch (kod) {
- case 1: case 2:
- if (kod == 1 && begin != NULL) { //Если создаем новый стек, должны освободить память, занятую предыдущим
- cout << "Clear Memory first!" << endl;
- break;
- }
- cout << "Input kol = "; cin >> n;
- srand(time(0));
- for (i = 1; i <= n; i++) {
- in = rand() % 100 - 30; //Заполняем информационную часть случайными числами от -30 до 100
- //begin = InStack(begin, in);
- }
- if (kod == 1) cout << "Create " << n << endl;
- else cout << "Add " << n << endl;
- break;
- case 3:
- if (!begin) {
- cout << "Stack Is Empty!" << endl;
- break;
- }
- cout << "--Stack--" << endl;
- View(begin);
- break;
- case 4:
- Del_All(&begin);
- cout << "Memory Free!" << endl;
- break;
- case 5:
- if (begin == NULL) {
- cout << "Stack is Empty!" << endl;
- break;
- }
- Task(begin);
- cout << "Deleted every 3ed element!" << endl;
- break;
- case 0:
- if (begin != NULL)
- Del_All(&begin);
- return 0; //Выход (EXIT)
- }
- }
- return 0;
- }
- //---Функция добавления элемента в стек---//
- Stack* InStack(Stack **p, int in) { //
- Stack *t = new Stack; //Захват памяти для элемента
- t->info = in; //Формируем информационную часть
- t->next = *p;
- *p = t; //Формируем адресную часть
- return t;
- }
- //---Функция просмотра стека---//
- void View(Stack *p) {
- Stack *t = p;
- while (t != NULL) {
- cout << t << " " << t->info << " " << t->next << endl; //Вывод на экран информационной части
- t = t->next;
- }
- }
- //---Функция освобождения памяти--//
- void Del_All(Stack **p) {
- while (*p != NULL) {
- t = *p;
- *p = (*p)->next;
- delete t;
- }
- }
- //--Функция удаления каждого 3 элемента--//
- void Task(Stack *b) {
- if (!(b)) {
- cout << "No elements\n";
- return;
- }
- Stack *t1 = b;
- while (t1 != NULL && t1->next != NULL) {
- Stack *t2 = t1->next;
- t1->next = t2->next;
- if (t2->next == NULL) t1 = t1;
- else t1 = t2->next;
- delete t2;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement