КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Лекция 12. На водогрейном котле: АСР температуры воды; АСР воздуха; АСР разрежения в топке
АСР нагрузки
На водогрейном котле:
(Иногда все перечисленные системы собирательно называют АСР горения).
АСР воздуха и разрежения в топке аналогичны соответствующим системам парового котла.
АСР температуры воды.
На деаэраторе:
Бинарные деревья поиска
Бинарные деревья поиска (БДП) часто используются для представления данных, среди которых идет поиск элемента по ключу. Если дерево организовано так, что для каждой вершины с адресом t справедливо утверждение: все ключи ее левого поддерева меньше ключа вершины с адресом t, а все ключи ее правого поддерева больше ключа вершины с адресом t, то такое дерево называется бинарным деревом поиска. В БДП для обнаружения ключа достаточно, начав с корня, двигаться к левому или правому поддереву на основании лишь одного сравнения с ключом текущей вершины. Предположим, что имеется описание класса, характеризующего БДП:
class bdp {public: int b; char name[20]; bdp *left; bdp*right; void create_tree();//создание БДП void output_tree(bdp *p);//вывод на экран БДП void search(int key,bdp *p);//поиск элемента в БДП void insert(bdp obj,bdp *&p);//вставка элемента в БДП void delete_element(int key,bdp *&p);//удаление элемента из БДП void delete_tree(bdp *&p);//удаление БДП из памяти компьютера };
Предположим, что имеются следующие описания: bdp *head;//указатель на корень дерева bdp *q;//текущий указатель
Поиск элемента с заданным ключом в БДП
void bdp::search(int key,bdp *p) {/*функция выводит на экран информационные поля найденного элемента или сообщает, что элемент не найден*/
while(p!=NULL&&p->b!=key) {if(p->b<key) p=p->right;
else p=p->left; } if(p==NULL) cout<<"\nЭлемент не найден"; else {cout<<"\n------------------------"; cout<<"\n|nomer|name|"; cout<<"\n------------------------"; cout<<"\n"<<setw(6)<<p->b; cout<<"|"<<setw(10)<<p->name<<"|"; cout<<"\n------------------------\n"; } getch(); }
Включение элемента с заданным ключом в БДП
void bdp::insert(bdp obj,bdp *&p) {if(p==NULL) {p=new bdp; p->b=obj.b; strcpy(p->name,obj.name); p->left=NULL; p->right=NULL; } else if(obj.b<p->b) insert(obj,p->left); else if(obj.b>p->b) insert(obj,p->right); }
Исключение элемента с заданным ключом из БДП
Исключение элемента реализуется просто, если вершина является листом, либо вершиной с одним потомком. Для удаления листа или вершины с одним потомком достаточно скорректироватьссылку у предшествующей вершины. Основная трудность состоит в удалении вершины с двумя потомками. В этом случае нужно найти подходящую вершину, которую можно было бы вставить на место удаляемой. Такой элемент всегда существует: это либо самый правый элемент левого поддерева, либо самый левый элемент правого поддерева.
Алгоритм удаления элемента из БДП должен различать 3 случая: 1.элемента с заданным ключом в дереве нет; 2.элемент с заданным ключом имеет не более одной ветви; 3.элемент с заданным ключом имеет две ветви. Определим функцию del(), которая заменяет удаляемый элемент с адресом q на самый правый элемент левого поддерева удаляемого элемента, если удаляемый элемент имеет две ветви.
void del(bdp *&r) { if(r->right==NULL) {q->b=r->b; strcpy(q->name,r->name); q=r; r=r->left; } else del(r->right); }
void bdp::delete_element(int key,bdp *&p) {
if(p==NULL) cout<<"\nЭлемента нет"; else if(key<p->b) delete_element(key,p->left); else if(key>p->b) delete_element(key,p->right); else {q=p; if(q->right==NULL) p=q->left; else if(p->left==NULL) p=q->right; else del(q->left); delete q; } }
Вывод значений ключей элементов дерева по возрастанию
void bdp::output_tree(bdp *p) {if(p!=NULL) {output_tree(p->left); cout<<"\n|"<<setw(6)<<p->b; cout<<"|"<<setw(10)<<p->name; cout<<"|"; output_tree(p->right); } }
Удаление БДП из динамической памяти
void bdp::delete_tree(bdp *&p) {if(p!=NULL) {delete_tree(p->left); delete_tree(p->right); delete p; p=NULL; } }
Создание БДП
void bdp::create_tree() {int i; bdp obj;
head=NULL; for(i=0;i<n;i++)//n – количество вершин в дереве {cin>>obj.b; gets(obj.name); insert(obj,head); } }
Дата добавления: 2014-01-07; Просмотров: 606; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |