Главная

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

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

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

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

ТОР 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

}

 

 






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

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