Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки, молоді та спорту України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи № 3
на тему:
"Структура даних СТЕК"
з дисципліни:
" Програмування. Частина III. Структури даних та алгоритми "
Вибір варіанту:
№ варіанта = [(день народження) + (місяць народження) + (ASCII–код першої літери прізвища – велика латинська літера) ] % 20 + 1
(23 + 8 + 70 ) % 20 + 1 = 2
Львів – 2013
Мета роботи:
Вивчення фундаментальної абстрактної структури даних стек. Набуття практичних навичок побудови стека, дослідження динаміки його вмісту та використання стеків для розв'язання прикладних задач.
Постановка задачі:
2. Реалізувати стек, у якому до опису стека додано змінну EMPTY замість функції empty(). Переписати основні функції роботи зі стеком з врахуванням цієї змінної. Після обробки всієї заданої вхідної послідовності перевірити, чи елементи стека будуть відсортовані (по спаданню або по зростанню).
Код програми:
#include <string>
#include<iostream>
using namespace std;
template<class T>
class Stack
{
public:
Stack():tail(0), head(0)
{}
bool EMPTY;
~Stack()
{while(head)
{tail=head->next;
delete head;
head=tail;}}
void push(T val)
{
Node* Temp;
Temp=new Node;
Temp->elem=val;
if(tail==0)
{
tail=Temp;
}
else
{
Temp->next=tail;
tail=Temp;
}
}
T top()
{
if(tail==0)
{
throw std::string("Stack is empty!");
EMPTY=true;
}
return tail->elem;
}
void pop()
{
if(EMPTY==true)
{
throw std::string("Stack is empty!");
}
Node* delptr=tail;
tail=tail->next;
delete delptr;
}
void print()
{
if(EMPTY==0)
{
throw std::string("Stack is empty!");
}
for(Node* ptr=tail; ptr!=0; ptr=ptr->next)
{
std::cout<<ptr->elem<<' ';
}
std::cout<<'\n';
}
private:
struct Node
{
Node():elem(0), next(0)
{
}
Node* next;
T elem;
};
Node* head;
Node* tail;
};
/*__________________________________________________________*/
int main()
{
int i=0;
const int sizemass=6;
cout<<"Eter mass:\n";
int r[sizemass];
for(i=0;i<sizemass;i++)
cin>>r[i];
Stack<int> St;
for(int i=0;i<sizemass;i++)
{
if(r[i]>=0)
St.push(r[i]);
else
St.pop();
}
try
{
while (St.top() != 0)
{
std::cout<<"elements in stack: ";
St.print();
std::cout<<"element pop: ";
std::cout<<St.top()<<'\n'<<"Countdown: ";
St.pop();
St.print();
}
}
catch(const std::string& e)
{
std::cout<<e<<'\n';
}
return 0;
}
Результат виконання програми:
Рис1. Ескіз вікна з результатом виконання програми
Висновок: На цій лабораторній роботі я ознайомився з cструктурою даних стек. Дослідив принципи і методи роботи зі стеком.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!