Практическая работа 3. Очередь. Операции над элементами очереди

Практическая работа 3. Очередь. Операции над элементами очереди.

 

1.Запустите IDE Borland C++ 5.02. Подготовьте запуск исполнимых файлов в консольном режиме.

2.Откомпилируйте предложенную программу вывода элементов однонаправленного списка. Измените в потоковых операторах вывода текст на русском языке на транслит или на английский язык. Протестируйте программу для любого количества звеньев кольца.

 

#include<iostream.h>

struct node

{

int elem;

node *sled;

};

class Spisok {

private:

node *no,*ko;

int klad;

public:

Spisok () {no=ko=NULL;}

void POSTROENIE ();

void VYVOD ();

void DOBAVLENIE (int);

int Set_Udal () { return klad; }

void YDALENIE ();

void OCHISTKA();

};

 

void main ()

{

Spisok A;

int el;

 

A.POSTROENIE ();

A.VYVOD ();

cout<<"Введите добавляемый элемент: ";

cin>>el;

A.DOBAVLENIE (el); A.VYVOD ();

cout<<"Удалим элемент из очереди.\n";

A.YDALENIE (); A.VYVOD ();

el=A.Set_Udal();

cout<<"Информационное поле удаленного звена: "<<el<<endl;

A.OCHISTKA();

}

 

void Spisok::POSTROENIE ()

//Построение очереди на базе однонаправленного списка без заглавного звена.

//no - указатель на начало очереди.

//ko - указатель на конец очереди.

{

node *r;

int el;

 

cout<<"Вводите элементы очереди:\n";

cin>>el;

if (el!=0)

{

r = new (node);

(*r).elem = el; (*r).sled = NULL;

no = r; ko = r; cin>>el;

while (el!=0)

{

r = new (node);

(*r).elem = el; (*r).sled = NULL;

(*ko).sled = r; ko = r; cin>>el;

}

}

else

{r = NULL; no = r; ko = r;}

}

 

void Spisok::VYVOD ()

//Вывод содержимого очереди.

//no - указатель на начало очереди.

//ko - указатель на конец очереди.

{

node *r;

cout<<"Очередь: "; r = no;

while (r!=NULL)

{

cout<<(*r).elem<<" "; r = (*r).sled;

}

cout<<endl;

}

 

void Spisok::DOBAVLENIE (int el)

//Добавление звена с информационным полем el к очереди,определенной указателями no и ko.

{

node *r;

 

r = new (node);

(*r).elem = el; (*r).sled = NULL;

if (no!=NULL)

{

(*ko).sled = r; ko = r;

}

else

{no = r; ko = r;}

}

 

void Spisok::YDALENIE ()

//Удаление звена из очереди, определенной указателями

//no и ko, с помещением его информационного поля в параметр klad.

{

node *q;

 

if (no==NULL)

cout<<"Удалить нельзя, так как очередь пуста!\n";

else

{

klad = (*no).elem; q = no;

no = (*no).sled; delete q;

}

}

void Spisok::OCHISTKA()

//Возврат выделенной памяти в "кучу".

{

node *q;

 

q=no;

if (no!=NULL)

{

while (no!=ko)

{

no=(*q).sled;

delete q; q=no; }

delete no;

no=ko=NULL;

}

}

 

Измените программу, чтобы можно было добавлять  и удалять  не 1 элемент, а столько, сколько хочет пользователь.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: