delete
iter;
}
bool
beg(int &rez)// установка итератора на первую смежную вершину,
{return
iter->beg(rez);}
bool
off()// опрос окончания просмотра смежных вершин,
{return
iter->off();}
bool
next(int &rez)// переход к следующей смежной вершине,
{
if(iter->next(rez))
return true;
return
false;
}
Ed*
operator*()// доступ к данным текущего ребра.
{
Ed
tmp;
try{
tmp
= **iter;
}
catch
(...) {
return
NULL;
}
return
tmp;
}
};
};
#endif
ListGraph.h
#ifndef _listGraph
#define _listGraph
#include
"ATD.h"
//Представление графа
при помощи списков смежности
template<class
T1>
class listGraph:public
GraphATD<T1>
{
//узел списка
смежности(не взвешаный)
struct node
{
node*
next;//указатель на следующий эллемент
int
num;//номер смежной вершины
node(int
_num)
{
next=NULL;
num=_num;
}
};
//узел списка
смежности(взвешаный)
struct
vznode:public node
{
T1*
data;//указатель на данные
vznode(int
_num):node(_num)
{
data=NULL;
}
};
struct
list//список смежности
{
friend
class Iterator;
node* ph;
bool vz;
list(bool
_vz)//конструктор-входной параметр признак взвешанности
{
vz=_vz;
ph=NULL;
}
bool
insert(int _num)//вставка нового элемента
{
if(ph==NULL)//если
список пуст - добавляем новый элемент в голову
if(!vz)
ph=new
node(_num);
else
ph=(node*)new
vznode(_num);
else//иначе
проверяем существование этого элемента в списке
{ //и
если добавляемый элемент не существует в списке - добавляем его вконец
node*
tmp=ph;
if(tmp->num==_num)
return false;
while(tmp->next!=NULL)
{
if(tmp->num!=_num)
tmp=tmp->next;
else
return
false;
}
if(tmp->num!=_num)
if(!vz)
tmp->next=new
node(_num);
else
tmp->next=(node*)new
vznode(_num);
}
return
true;
}
bool
del(int _num)//удаление
{
if(ph==NULL)
return false;
node*
tmp=ph;
if(ph->num==_num)//проверяем
наличие удаляемого элемента в голове списка
{
ph=ph->next;
if(!vz) delete
tmp;
else
{
delete
((vznode*)tmp)->data;
delete
tmp;
}
return
true;
}
else//если
элемента нет в начале списка, то проверяем все остальные элементы
{
while(tmp->next!=NULL)
{
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.