Информатика и технология программирования


Структуры данных с элементами произвольных типов - часть 3



//------------------------------------------------------bk57-03.cpp


struct list
{
struct list *next; // системная часть элемента


};
// Включение элемента в конец списка ------------------


list *insert(list *ph, list *p)
{
if (ph == NULL) return p;
for (list *q=ph; q-&#62next!=NULL; q=q-&#62next);
q-&#62next=p;
return ph;
}
//----- Исключение первого элемента ----------------------


list *exclude(list * *ph)
{
list *p;
if ( *ph == NULL) return NULL;
p = *ph; *ph=p-&#62next;
return p;
}
//----- Работа с конкретным списком -----------------------


struct list1
{
struct list *next; // системная часть элемента


int value; // прикладная часть


} // элемента


*PH = NULL; // пустой список


void main()
{ list1 *pp;
for ( int i=0; i&#60 10; i++)
{
pp = new list1; // создание элемента


pp-&#62value = i; // заполнение


PH=(list1*)insert((list*)PH,(list*)pp);
// включение в список -


// преобразование типа list1* - list*


}
for (i=0; i&#60 10; i++) // исключение элемента -


{ // преобразование типа list* - list1*


pp = (list1*)exclude((list**)PH);
delete pp;
}
}

Аналогичная картина наблюдается при работе с деревьями. В массиве указателей "системная" и "прикладная" части структуры данных связаны естественным образом по указателю, поэтому там возможен только первый вариант реализации.




Начало  Назад  Вперед



Книжный магазин