Министерство по развитию информационных технологии и коммуникации Республики Узбекистан
Ташкентский Университет информационных технологии имени Мухаммада ал-Хоразми
Предмет: <<Структуры данных и алгоритмы>>
Лабораторная работа №5
На тему: <<НЕЛИНЕЙНЫЕ СТРУКТУРЫ ДАННЫХ (ДЕРЕВЬЯ И ГРАФЫ)>>
Выполнил:
Студент группы №233-21 Ат-Сервис
Факультета “Компьютерный инжиниринг ”
Султанов Улугбек
Проверил:
Мухсинов Ш.Ш
Ташкент 2022
ЗАДАНИЕ 1. Определить новую динамическую структуру данных (бинарное дерево на основе нелинейного связного списка). Описать стандартные операции-процедуры по работе со структурой данных (добавления нового элемента, обхода дерева, удаления элемента, визуализации дерева и индивидуального задания).
Вершины дерева вещественные числа. описать процедуру, которая удаляет все с четными значениями.
#include
using namespace std;
struct vershin
{
float data;
vershin *l, *r;
};
void add(vershin *&d, float x)
{
if(d == NULL)
{
d = new vershin;
d->data = x;
d->l = d->r = NULL;
}
if(d->data > x) add(d->l,x);
if(d->data < x) add(d->r,x);
}
void obxod1(vershin *d)
{
if(d!=NULL)
{
cout << d->data << ",";
obxod1(d->l);
obxod1(d->r);
}
}
void obxod2(vershin *d)
{
if(d!=NULL)
{
obxod2(d->l);
cout << d->data << ",";
obxod2(d->r);
}
}
void obxod3(vershin *d)
{
if(d!=NULL)
{
obxod3(d->l);
obxod3(d->r);
cout << d->data << ",";
}
}
void visual(vershin *d, int u)
{
if(d != NULL)
{
visual(d->r,u+1);
for(int i = 0; i < u; i++)
{
cout << "\t";
}
cout << d->data << endl;
visual(d->l,u+1);
}
}
void sredarif(vershin *d, float &s)
{
int k = 0;
if(d!=NULL)
{
s+=d->data;
sredarif(d->l, s);
k++;
sredarif(d->r, s);
}
}
int main()
{
vershin *tree = NULL;
float N, x, s = 0, sr;
cout << "Vvedite kolichestvo derevya = "; cin >> N;
for(int i = 1; i <= N; i++)
{
cin >> x;
add(tree,x);
}
sredarif(tree,s);
cout<<"summa->"<sr = s/N;
cout << sr<add(tree,sr);
visual(tree,0);
cout << "\nKLP: ";
obxod1(tree);
cout << "\nLKP: ";
obxod2(tree);
cout << "\nLPK: ";
obxod3(tree);
return 0;
}
Do'stlaringiz bilan baham: |