
- •Оглавление
- •1. Вычисление нод алгоритмом Евклида
- •2. Нахождение нод и нок
- •3. Вычисление факториала
- •4. Вычисление факториала рекурсивно
- •5. Вычисление биноминального коэффициента
- •7. Разложение целого числа на сумму биноминальных коэффициентов
- •8. Сумма некоторых элементов массива
- •9. Модификация массива данных. Вариант 1.
- •10. Модификация массива данных. Вариант 2.
- •11. Работа с числами массива
- •12. Поиск совпадений чисел в массиве
- •13. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 1.
- •14. Растяжение списка и вставка, удаление из списка и сжатие. Вариант 2.
- •15. Подсчет количества цифр в целом числе
- •16. Проверка целого числа на симметрию цифр. Вариант 1.
- •17. Проверка целого числа n на симметрию цифр Вариант 2.
- •19. Программа проверки глубины вложения скобок
- •20. Формирование двумерного массива
- •21. Вычисление определителя матрицы второго порядка
- •22. Вычисление определителя матрицы 3 - го порядка
- •23. Нахождение обратной перестановки и по ней циклической формы
- •24. Сортировка_1 простыми вставками
- •25. Сортировка_2 простыми вставками
- •26. Сортировка алгоритмом Шелла
- •27. Быстрая сортировка Хоора
- •28. Поразрядная сортировка
- •29. Cортировка 1 методом пузырька
- •30. Cортировка 2 методом пузырька
- •31. Работа с библиотечными карточками
- •32. Работа 1 с конструктором и деструктором
- •33. Работа 2 с конструктором и деструктором
- •34. Работа с комплексными числами
- •35. Работа_1 с комплексными числами через указатели
- •36. Работа_2 с комплексными числами через указатели
- •37. Построение циклической очереди статическое распределение памяти
- •38. Построение стека символов статическое распределение памяти
- •39. Код работы с циклической очередью, переделанный из кода стека
- •40. Код работы со стеком, переделанный из кода циклической очереди
- •41. Генерирование случ. Чисел с показательным распределением
- •42. Работа со стеком динамическое распределение памяти
42. Работа со стеком динамическое распределение памяти
(автор Лебедев С.Н.)
#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
/***
*
* КЛАСС: item
*
* НАЗНАЧЕНИЕ: Контейнер для элементов структуры
*
****/
class item
{
char info; // информация в узле(ячейке)
item *prev; // ссылка на предидущий узел(ячейку)
public:
item(char, item *); // конструктор
~item(); // дестуктор
char get_info();
item* get_prev();
void set_info(char);
void set_prev(item*);
};
item::item(char ch, item * previous)
{
info = ch;
prev = previous;
}
item::~item()
{
}
char item::get_info()
{
return info;
}
item* item::get_prev()
{
return prev;
}
void item::set_info(char ch)
{
info=ch;
}
void item::set_prev(item* previous)
{
prev=previous;
}
/***
*
* КЛАСС: stack
*
* НАЗНАЧЕНИЕ: Организация структуры типа стек
*
****/
class stack
{
item *top; // указатель на вершину стека
public:
stack(); // конструктор стека
~stack(); // дестуктор стека
void push(char ch); // добавление в стек элемента
char pop(); // удаление из стека элемента
};
// КОНСТРУКТОР
stack::stack()
{
top=NULL;
}
// ДЕСТРУКТОР
stack::~stack()
{
while(top != NULL)
{ item* temp=top;
top=temp->get_prev();
delete temp;
}
}
// ДОБАВЛЕНИЕ
void stack::push(char ch)
{
item *temp = new item(ch, top);
top=temp;
}
// УДАЛЕНИЕ
char stack::pop()
{
char ch;
item* temp;
if (top == NULL)
{
cout << "stack is empty ";
return NULL;
}
ch=top->get_info();
temp=top;
top=temp->get_prev();
delete temp;
return ch;
}
int main()
{
stack *s = new stack; // создание объекта стек
int i,n;
char ch;
cout<< "Enter size of stack\n";
cin>>n;
cout<<" Enter items of stack\n";
for(i=1;i<=n;i++)
{
cin>>ch;
s->push(ch);
}
cout <<"\n Enter for pop Y Enter for not pop N \n";
cin>>ch;
while(ch!='N')
{
cout << s->pop()<< "\n";
cout <<"\n Enter for pop Y Enter for not pop N \n";
cin>>ch;
}
delete s; // удаление объекта стек
return 0;
}