Робота з лінійними зв’язаними списками. Структури даних стек та черга
Автор: Andrii Ivankov • Май 21, 2022 • Лабораторная работа • 1,222 Слов (5 Страниц) • 215 Просмотры
Лабораторна робота №5
Тема: Робота з лінійними зв’язаними списками. Структури даних стек та черга .
Мета роботи: Отримати навики роботи зі стеком та чергою, реалізованими у вигляді зв’язного лінійного списку.
Хід роботи
[pic 1]
Код програми:
#include <iostream>
#include<string>
using namespace std;
struct Node
{
int data;
Node* link;
};
Node* top;
// К-сть елементів у стеку
int Count()
{
if (top == nullptr)
return 0;
else
{
Node* p = top;
int count = 0;
while (p != nullptr)
{
count++;
p = p->link;
}
return count;
}
}
//функція перевірки, чи є значення x у однозв’язному списку
bool search(Node* top, int x)
{
Node* current = top; // ініціалізація current
while (current != NULL)
{
if (current->data == x)
return true;
current = current->link;
}
return false;
}
// функція для додавання елемента
// дані в стеку вставляють на початку
void push(int data)
{
// Створення нового вузлу temp і розподілення пам'яті у купі
Node* temp = new Node();
// Перевірка, чи стек є повний
// Тоді вставлення елемента призведе
// до переповнення стека
if (!temp)
{
cout << "\nStack Overflow";
exit(1);
}
// Інаіціалізація data у поле тимчасових даних
temp->data = data;
// Поміщаємо посилання на верхній покажчик у тимчасове посилання
temp->link = top;
// temp стає вершиною стека
top = temp;
}
// Функція перевірки чи стек порожній чи ні
int isEmpty()
{
//Якщо top дорівнює NULL, це означає, що
// у стеку немає елементів
return top == NULL;
}
//Функція для повернення верхнього елемента в стеку
int peek()
{
// Iякщо стек не порожній , то повертаємо top element
if (!isEmpty())
return top->data;
else
exit(1);
}
// виштовхнути в top елемент із стеку
void pop()
{
Node* temp;
// перевіряємо стек на underflow
if (top == NULL)
{
cout << "\nStack Underflow" << endl;
exit(1);
}
else
{
// присвоюємо top в temp
temp = top;
// присвоюємо другий вузол в top
top = top->link;
// Це автоматично знищить
// зв'язок між першим і другим вузлом
// Звільнення пам'яті верхнього вузла
//тобто видалити вузол
free(temp);
}
}
//Функція виведення всіх елементів стека
void display()
...