stify"> Все це не так складно реалізувати самостійно, тому ні яких програмних прикладів не наводиться.
3.Стекі
Визначення стека
Стек - динамічна структура даних, для якої виконується правило: останнім прийшов - першим пішов. Таким чином, і доповнення нових даних, і вилучення їх із стека завжди виконується з одного боку.
В
Вершина стека - ця та його частина, через яку ведеться вся робота. На вершину стека додаються нові елементи, і з вершини стека знімаються (видаляються) елементи. p align="justify"> Загалом, стек - це однозв'язний список, для якого визначені тільки дві операції: додавання і видалення з початку списку.
Прикладом стека може служити коробка, в яку зверху укладають книги. Витягувати книги також доводиться зверху. p align="justify"> Операції зі стеком
Розглянемо основні та додаткові дії з стеком. Для роботи використовуємо структури Data і Stek:
struct Data ​​p>
{
int a;
}; Stek
{
Data d;
Stek * next;
};
У програмі визначаємо покажчик на початок майбутнього стека:
* u = NULL;
Після цього можна почати працювати зі стеком.
1. Додавання в стек. Функцію додавання назвемо Push () - за аналогією з командою асемблера push, яка заносить ціле число в програмний стек.
void Push (Stek ** u, Data & x)
{
Stek * t = new Stek;// Пам'ять під новий елемент
t-> da = xa;// Заповнення полів
t-> next = * u;// Підключаємо новий елемент до наявних
* u = t;// Перенастройка вершини
}
Звернутися до функції можна так: (& u, x);
де x - об'єкт типу Data.
2. Витяг з стека. Тут знову аналогія з асемблером (команда pop виштовхує ціле число із стека).
bool Pop (Stek ** u, Data & x)
{
if (* u == NULL)
{
cout <<"Pustoj stek" <
return false;
}
Stek * t = * u;
xa = t-> da;// Отримуємо значення полів на вершині стека
* u = t-> next;// Перенастройка вершини
delete t;// Видалення непотрібного елементу
...