Міністерство освіти і науки України
Харківський патентно-комп’ютерний коледж
Практична робота №3
з дисципліни «Алгоритми і структури даних»
Тема: «Лінійні структури даних»
Студента групи П-22
Русаков Д.Д.
2014
Завдання: Створити Стек.
Хід роботи:
Стек - це такий лінійний список, в якому і додавання нових і видалення існуючих елементів можливе тільки з головного елемента. Стек часто називають структурою LIFO, що означає перший прийшов, останнім пішов.
Лістинг програми:
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
struct Element
{
char data;
Element *next;
};
class List
{
private:
Element * head;
public:
List()
{
head=NULL;
}
~List();
void Push(char);
char Pop();
bool isEmpty();
void Show();
void AddFirst (char d);
};
void List::Push(char d)
{
Element *en=new Element;
en->data=d;
en->next=head;
head=en;
}
void List::AddFirst (char d)
{
Element*en=new Element;
en->data=d;
en->next=head;
head=en;
}
char List::Pop()
{
if(isEmpty())
return '*';
Element *pe=head;
char tmp=head->data;
head=head->next;
delete pe;
return tmp;
}
bool List::isEmpty()
{return head?false:true;}
void List::Show()
{
while(head)
{
cout<<Pop();
}
}
List::~List()
{
while(head)
{
Element *en=head;
head=head->next;
delete en;
}
}
int main()
{
char tmp[100];
int nn;
ifstream ifs("D:\\P22\\1.txt",ios::app);
if(ifs)
{
while(!ifs.eof())
{
ifs.getline(tmp,100,'\0');
strcat(tmp,"|");
cout<<tmp;
}
nn=strlen(tmp);
}
List St;
int i=0;
cout<<nn<<endl;
for(i;i<nn;i++)
{
St.Push(tmp[i]);
}
St.Show();
cin.get();
}
Вхідні/вихідні дані:
Висновки:
У моєму прикладі стек був побудований на основі лінійного зв'язного списку, але стеки можуть реалізовуватися на різних структурах даних: на одновимірних статичних і динамічних масивах, на лінійних списках, за допомогою файлів. Загалом стек можна реалізувати на будь-якій структурі, в якій є можливість зберігати кілька елементів і якщо є то, куди можна зберігати дані.