Работа с двоичными деревьями: построение, поиск, удаление, включение и обход

Автор: Пользователь скрыл имя, 26 Декабря 2010 в 19:45, курсовая работа

Описание работы

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

Содержание

Введение……………………………………………………………………6
1 Теоретические данные…………………………………………………...7
2 Постановка задачи……………………………………………………….11
2.1 Общая постановка задачи……………………….…………………..11
2.2 Схема информационных потоков…………………………………..11
3 Описание входных и выходных структур данных…………………….12
3.1 Входные данные……………………………………………………...12
3.2 Выходные данные …………………………………………………...12
4 Описание и обоснование выбора метода решения и алгоритмы……..13
4.1 Обоснование выбора языка программирования…………………...13
4.2 Структура для узла в языке С……………………………………….13
4.3 Структура в языке С для дерева…………………………………….13
4.4 Создание БД………………………………………………………….14
4.5 Поиск………………………………………………………………….14
4.6 Вставка………………………………………………………………..15
4.7 Удаление……………………………………………………………...16
4.8 Упорядоченное рекурсивное прохождение………………………...19
5 Описание программной реализации……………………………………..21
5.1 Функциональная схема программы………………………………....21
5.2 Комплект поставки и порядок инсталляции………………………..21
6 Анализ эффективности реализуемого метода……………………….….22
6.1 Общая оценка поиска в двоичном дереве…………………………..22
7 Анализ результата………………………………………………………..23
8 Минимальные требования программы…………………………………27
Выводы……………………………………………………………………..28
Список литературы……………………….……………………………….29
Приложение A Техническое задание……………….....………………....30
Приложение Б Руководство пользователя.……..…...…………………..33
Приложение В Экранные формы..………………………....…………….34
Приложение Г Листинг программы……………………………………...35

Работа содержит 1 файл

Отчёт по курсовому проекту.doc

— 420.00 Кб (Скачать)

           )

          { // start_add_char

          p++;

          s[p-1]=ch;

          s[p]=0;

          setcolor(26);

          c[0]=ch;

          c[1]=0;

          writexy(x,y,c);

          x+=clen(ch)+1;

          } // end_add_char

        switch (ch)

          {

          case 27 : // Cancel

                  {

                  s[0]=0;

                  return 0;

                  }

          case 13 : // OK

                  {

                  return 1;

                  }

         case  8 : // BS

                  if (p>0)

                  {

                  x-=clen(s[p-1])+1;

                  bar(x,y,x+clen(s[p-1])+1,y+10);

                  p--;

                  s[p]=0;

                  break;

                  }

          } // switch_/non-special/

        } // end_/non-special/

      }// end_if_kbhit()

    delay(1);

    }

  while (1);

  }// end_proc 
 

/// ////  ///

/// MAIN  ///

/// ////  ///

int main()

{

  char sedrik,simba;

  char str[4];

  struct bin_tree *tree;

  int i,//what I'm inserting

      result;

  fp=-100;

  svgamode(3);

  Back();

  clear();

  bar_(100,200,700,500);

  help();

  getch();if(kbhit())getch();

  clear();

  tree = bin_create();

  do{

      flag = 0;

      sedrik=getch();

      switch(sedrik)

      {

        case 0: sedrik=getch();

        switch(sedrik)

        {

          case 60: //HELP ABOUT BINARY TREES

          {

            clear();

            showbmp16x(65,170,"c:\\1help.bmp",0,1,50);

            getch();if(kbhit())getch();

            clear();

            showbmp16x(70,170,"c:\\2help.bmp",0,1,50);

            getch();if(kbhit())getch();

            clear();

            bin_walk(tree);

            break;

          }

          case 61: //About F3

          {

            clear();

            bar_(200,300,600,500);

            about();

            getch();if(kbhit())getch();

            clear();

            bin_walk(tree);

            break;

          }

          case 59: //Help

          {

            clear();

            bar_(100,200,700,500);

            help();

            getch();if(kbhit())getch();

            clear();

            bin_walk(tree);

            break;

          }

          case 68: //Exit

          {

            bin_destroy(tree);

            return EXIT_SUCCESS;

          }

          case 83: //Del

          {

            setfillstyle(1,27);

            bar_(250,320,550,380);

            setcolor(26);

            outtextxy(270,350,"Что удалить:");

            re(375,345,str,2,20);

            i=atoi(str);

            if(bin_search(tree,i) == 0)

            {

              clear();

              setcolor(18);

              outtextxy(320,350,"В удалении отказано");

              getch();if(kbhit())getch();

              clear();

              bin_walk(tree);

              break;

            }

            setfillstyle(1,28);

            bar(250,320,550,380);

            if (bin_delete(tree, i) == 0)

            {

              setcolor(18);

              outtextxy(270,350,"Ошибка удаления элемента  из дерева");

              getch();if(kbhit())getch();

              exit(EXIT_FAILURE);

            }

            clear();

            bin_walk(tree);

            break;

          }

          case 65: //Search

          {

            flag = 1;

            setfillstyle(1,27);

            bar_(250,320,550,380);

            setcolor(26);

            outtextxy(270,350,"Что искать:");

            re(370,345,str,2,20);

            i=atoi(str);

            setfillstyle(1,28);

            bar(250,320,550,380);

            if(bin_search(tree,i)==0)

            {

              setcolor(18);

              outtextxy(320,350,"Элемент не найден.");

              getch();if(kbhit())getch();

              clear();

              bin_walk(tree);

            }

            else

            {

              setcolor(17);

              outtextxy(330,350,"Элемент найден.");

              getch();if(kbhit())getch();

              clear();

              bin_walk(tree);

            }

            break;

          }

          case 82: //Ins

          {

            setfillstyle(1,27);

            bar_(250,320,550,380);

            setcolor(26);

            outtextxy(270,350,"Введите элемент:");

            re(405,345,str,2,20);

            i=atoi(str);

            if(bin_search(tree,i) == 1)

            {

              flag=0;

              clear();

              setcolor(18);

              outtextxy(320,350,"В добавлении отказано");

              getch();if(kbhit())getch();

              clear();

              bin_walk(tree);

              break;

            }

            clear();

            result = bin_insert(tree, i);

            if (result != 1)

            {

              setcolor(18);

              outtextxy(270,350,"Error inserting element into tree.");

              getch();if(kbhit())getch();

              exit(EXIT_FAILURE);

            }

            bin_walk(tree);

            break;

          }

        }

      }

    }while(1==1);

}

Информация о работе Работа с двоичными деревьями: построение, поиск, удаление, включение и обход