Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая 3курс.docx
Скачиваний:
3
Добавлен:
20.12.2018
Размер:
94.84 Кб
Скачать
  1. Реализация

#include <conio.h>

#include <stdlib.h>

#include <iostream.h>

#include <math.h>

#include <bios.h>

#include <iomanip.h>

struct List

{

int info;

List *prev,*next;

};

class TTurn //Базовый класс «Очередь»

{

protected :

List *head,*p,*tail;

public :

TTurn (); //Конструктор

void Clear (); //Очистка

int Length (); //Определение длины

void Write (); //Вывод на экран

void Delete (); //Удаление одного элемента

int Take (); //Доступ к элементу

};

class TLifo : public TTurn //Класс «LIFO»

{

public :

TLifo ();

void operator + (int k); //Добавление элемента

};

class TFifo : public TTurn //Класс «FIFO»

{

public :

TFifo ();

void operator + (int k); //Добавление элемента

};

/***********************************/

TTurn::TTurn () //Конструктор (создает пустую очередь)

{

head=new List;

tail=new List;

head->info=NULL;

tail->info=NULL;

head->next=tail;

tail->prev=head;

p=head;

};

void TTurn::Clear ()

{

List *q;

p=tail->prev;

while (p->info!=NULL)

{

p=tail->prev;

q=p;

p->prev->next=tail;

tail->prev=p->prev;

p=p->prev;

delete q;

}

};

int TTurn::Length ()

{

p=head->next;

int k=0;

while (p->info!=NULL)

{

p=p->next;

k++;

}

return (k);

}

void TTurn::Write ()

{

cout << "‘®бв®п­ЁҐ:" << endl;

p=head->next;

while (p->info!=NULL)

{

cout << setw(8) << p->info;

p=p->next;

}

cout << endl;

return;

};

void TTurn::Delete ()

{

List *q;

p=head->next;

q=p;

p->next->prev=head;

head->next=p->next;

p=p->next;

delete q;

};

int TTurn::Take ()

{

p=head->next;

int i;

i=p->info;

return (i);

}

/*************************************/

TLifo::TLifo ()

{

head=new List;

tail=new List;

head->info=NULL;

tail->info=NULL;

head->next=tail;

tail->prev=head;

p=head;

};

void TLifo::operator + (int k) //Добавление элемента в начало

{

p=new List;

p->info=k;

p->prev=head;

p->next=head->next;

head->next->prev=p;

head->next=p;

return;

};

/***************************************/

TFifo::TFifo () //Конструктор

{

head=new List;

tail=new List;

head->info=NULL;

tail->info=NULL;

head->next=tail;

tail->prev=head;

p=head;

};

void TFifo::operator + (int k) // Добавление элемента в конец

{

p=new List;

p->info=k;

p->next=tail;

p->prev=tail->prev;

tail->prev->next=p;

tail->prev=p;

return;

};

/***************************************/

void main () //Главная функция

{

clrscr();

TLifo head1;

TFifo head2;

cout<<"START "<<"-"<<" FINISH"<<endl;

cout << "Работа LIFO:" << endl;

head1+1;

head1+2;

head1+3;

cout <<"Создание:"<<endl;

head1.Write();

int i=head1.Length();

cout << endl << "Определение длины:" << endl << i << endl;

cout << "Удаление одного элемента:" << endl;

head1.Delete();

head1.Write();

cout << "Доступ к элементу:" << endl;

i=head1.Take();

cout << i << endl;

cout << "Очистка:" << endl;

head1.Clear();

head1.Write();

cout<<"Работа FIFO:"<<endl;

head2+1;

head2+2;

head2+3;

head2+4;

cout <<"Создание:"<<endl;

head2.Write();

i=head2.Length();

cout << endl << "Определение длины:" << endl << i << endl;

cout << "Удаление одного элемента:" << endl;

head2.Delete();

head2.Write();

cout << "Доступ к элементу:" << endl;

i=head2.Take();

cout << i << endl;

cout << "Очистка:" << endl;

head2.Clear();

head2.Write();

}