ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Дан файл символов построить частотный словарь, представив его виде бинарного дерева поиска и составить линейно скобочную запись.//подключение внешних модулей #include "stdio.h" #include "string.h" #include "iostream.h" #include "Windows.h" #include "io.h" #include "fcntl.h" #include <sys/stat.h> struct list{//ст-ра элемента дерева char el; int count; list *nextl,*nextr; }; char* scob_zap(list *node)
{//функция воз-я скоб-ю запись дерева char * asd = new char [1024]; ZeroMemory(asd,1024);//очищаем память asd[0] = node->el;//записывем то что нах-ся в инф поле strcat(asd,"(");//присоединяем ( if(node->nextl!=NULL) strcat(asd,scob_zap(node->nextl));//рек-но ищем ск. зап. Для левого наследника strcat(asd,","); if(node->nextr!=NULL) strcat(asd,scob_zap(node->nextr)); //рек-но ищем ск. зап. Для правого наследника strcat(asd,")"); return asd;//возвращаем получ значение } void insert_el(char el, list ** node) {//функция вставки элемента в дерево if(*node == NULL) {//создаем новый элемент *node = new list; (*node)->el = el; (*node)->nextl = NULL; (*node)->nextr = NULL; (*node)->count = 1; }else//изменяем уже имеющийся если оны равны if(el == (*node)->el){ (*node)->count++; }else{//если не равны – ищем дальше if(el>(*node)->el) insert_el(el,&(* node)->nextr); else insert_el(el,&(* node)->nextl); }} int fh; void main(){ //the main function fh = -1;//file handle list *fst,*tek; fst = tek = NULL;//создаём файл fh = _open("tmp1.file", _O_WRONLY|_O_CREAT); printf("vvedite simvol i = "); char i; scanf("%c",&i); do{ int j = _write(fh,&i,sizeof(char));//записываем элементы в него if(j<=0) printf("error write"); printf("Vvedite simvol(konechnii element -!) i = "); cin>>i;}while(i!='!'); _close(fh);//close file fh = _open("tmp1.file",_O_RDONLY); bool is_first = true;// while(!_eof(fh)) { _read(fh,&i,sizeof(char)); insert_el(i,&fst); }// end of tree construction printf("%s",scob_zap(fst));//output string }
Не нашли, что искали? Воспользуйтесь поиском:
|