Древовидные структуры

Автор работы: Пользователь скрыл имя, 20 Декабря 2010 в 09:12, курсовая работа

Описание

Данная программа представляет собой реализацию нелинейной структуры данных в памяти и предлагает интерфейс для работы с ней. Чтобы реализовать структуру данных в памяти используется динамический массив указателей на строки, в который при вводе сохраняются указатели на вводимые строки, затем они сортируются по возрастанию длины. Полученный массив указателей сортируется таким образом, чтобы линейно с помощью операции вставки в дерево сформировать сбалансированное дерево. Структура данных представляет собой:

Содержание

1.Задание………………………………………….……………...…………………3
2.Структурное описание разработки……………………………...……………...4
3.Функциональное описание………………………………………..……………..8
4.Описание работы программы на контрольном примере и выводы……….…9
5.Литература…………………………..………………………………………..…12

Работа состоит из  1 файл

Копия записка.doc

— 169.50 Кб (Скачать документ)

            {

                  int res, dif;

                  dif = max - min;

                  res = dif / 2;

                  res = res + min;

                  return res;

            } 
 

      // функция генерирования массива строк размерностью n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1111

      char** randstr(int n)

            {

                  char* str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

                  char a;

                  char** mas = new char*[n];//массив указателей размерностью н

                        for(int j = 0; j < n; j++)

                        {

                              char* str2 = new char[j + 2];

                              str2[j+2] = '\0';

                              for (int i=0;i <= j + 1;i++)

                              {

                                    a = (rand()%strlen(str))+1;//к остатку от деления случайного числа на длину строки прибавили 1

                                    str2[i] = a + '0'; //

                              }

                              mas[j] = new char[j+2];

                              strncpy(mas[j],str2,strlen(str2)+1); 

                        }

                        return mas;      

            }

}; 

void main()

{

      tree one;

      char* mas = new char[100];

      char** mas1;

      char* name = new char[100];

      int n;

      setlocale(LC_ALL,"Russian");

      while(true)

      {

            system("cls");

            cout<<"1. Печать дерева"<<endl

                  <<"2. Создание дерева"<<endl

                  <<"3. Выход"<<endl;

            switch(getch())

            {

            case'1':system("cls");

                        cout<<"1. Дерево"<<endl

                              <<"2. Сбалансированность"<<endl

                              <<"3. Средняя длнна ветви"<<endl

                              <<"4. Количество оперций"<<endl;

                        switch(getch())

                              {

                                    case'1':

                                          if(one.head != NULL)

                                                one.print();

                                          else

                                                cout << "Дерево пустое" << endl;

                                          getch(); break;

                                    case'2':

                                          if(one.head != NULL)

                                                one.balanse();

                                          else

                                                cout << "Дерево пустое" << endl;

                                           getch(); break;

                                    case'3':

                                          if(one.head != NULL)

                                                 one.med_len();

                                          else

                                                cout << "Дерево пустое" << endl;

                                           getch();  break;

                                    case'4':

                                          if(one.head != NULL)

                                                cout << one.bal << endl << one.pu << endl << one.t << endl;

                                          else

                                                cout << "Дерево пустое" << endl;

                                           getch();  break;

                              }

                        break;

            case'2':system("cls");

                        cout<<"1. Создать дерево из n вершин"<<endl

                              <<"2. Вставить вершину"<<endl;

                        switch(getch())

                        {

                              case'1':cout << "Введите количество вершин:" <<endl;

                                    cin >> n;

                                    mas1 = new char*[n];

                                    mas1 = one.randstr(n);

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

                                    one.push(mas1[i]);

                                    one.balanse();

                                    break;

                              case'2':cout << "Введите строку:"<<endl;

                                    cin >> mas;

                                    mas[strlen(mas)+1] = '\0';

                                    one.push(mas);

                                    break;

                        }

                        break;       

            case'3':return;

            }

      }

delete[] mas;

delete[] name;

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

      delete[i] mas;

}; 
 

Информация о работе Древовидные структуры