Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Написать процедуру которая по линейно скобочной записи строит бинарное дерево поиска




struct list{//ст-ра элемента дерева

char el;

list *nextl,*nextr;

};

struct ss{//stack struct

list* inf;

ss* prew;

};//структура стека

list* pop(ss** tos)//извлечь из стека

{

if(*tos!=NULL){

list * tmp =(*tos)->inf;

(*tos)=(*tos)->prew;

return(tmp);

}

}

void push(list *ll,ss** tos) //поместить в стек

{

ss *nn = new ss;

nn->inf = ll;

nn->prew = *tos;

*tos = nn;

}

list * buildtree(char * lsz)//функция построения дерева

{

list * fff = NULL;//инициализируем корень

list * tek = NULL; //инициализируем пер-ю тек-го ел-та

ss * tos = NULL;//инициализируем вершину стека

int l = strlen(lsz);//определяем длину строки

bool fl = false;//сбрасываем флаг запятой

for(int i = 0;i<l;i++)

{

char s = lsz[i];

if(i == 0){

 

fff = new list;

fff->el = s;

fff->nextl=NULL;

fff->nextr=NULL;

tek = fff;

bool fl = false;

}else{

if(s == '('){ //сбрасываем флаг запятой

fl = false;

}else

if(s == ')'){

tek = pop(&tos);//дост элемент из стека

fl = false; //сбрасываем флаг запятой

}else

if(s == ','){

fl = true;//устанавливаем флаг запятой

}else{

push(tek,&tos);//помещаем переменную в стек

list *tmp = new list;//созд новый Эл-т дерева

tmp ->el = s;

tmp->nextl=NULL;

tmp->nextr=NULL;

if(!fl)tek->nextl = tmp;

else//настраиваем ссылки с пред-го елемента

tek->nextr = tmp;

tek = tmp;//текущий элемент приравниваем к толькосозданному

}

}

}

return fff;

}

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных