Форум программистов, компьютерный форум CyberForum.ru

Обход дерева Хаффмана - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что означает using namespace std? http://www.cyberforum.ru/cpp-beginners/thread767219.html
Что означает в с++? using namespace std объясните пожалуйста простым языком))
C++ Составить программу, которая считывает текст из файла и определяет Составить программу, которая считывает текст из файла и определяет, сколько раз введенное с клавиатуры слово встретилось в файле, результат записывает в другой файл. Помогите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread767186.html
Указатели и массивы C++
Привет всем. Объясните пожалуйста int* v; int**v; Чем они эквивалентны?
C++ Статический и динамический стек
Необходимо разработать программу, реализующую алгоритм стека (10 элементов). Решение необходимо представить в двух вариантах: статическом (на основе массива структур) и динамическом. В качестве элемента стека выбрать структуру жд_вокзал: i. Номер (ключ) ii. Станция отправления iii. Станция назначения iv. Дата/время отправления v. Дата/время прибытия Предусмотреть многоуровневое меню:...
C++ присвоения константе http://www.cyberforum.ru/cpp-beginners/thread767116.html
Допустим у нас есть класс: class Class{ public: Class(int = 5); private: const int n; }; Class::Class(int _n) {
C++ Целое значение близкое к 7 000 000 000 Здраствуйте, нашел так называемый проект ейлер с задачами для ищущих=) В общем задача найти самый большой простой делитель числа. Алгоритм работает на малых числах но когда ввожу 600851475143 , число которое мне в общем то и нужно посчитать программа работает неверно. Подскажите пожалуйста как правильно ввести это значение. Пробовал и unsigned int и прочее. :cry: #include <iostream>... подробнее

Показать сообщение отдельно
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
06.02.2013, 11:36  [ТС]     Обход дерева Хаффмана
Обход в ширину. Вместо Очереди , линейный список .
Код неграмотный.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
list *otvet(list *p){
      /* Обход дерева  в ширину
       * w - очередь (здесь связный список)
       * e - бегунок
       * br - используется как возврат к l (можно изменить код , и убрать br из использ.
       */
      p->inf.cod = "";
      list *w = new list;
      list *l ,*e , *br ,*a;
      w = e = a = p;
 
      while(e){
          l = e;
          
          if(l->left){
          (l->left)->inf.cod= l->inf.cod + "0";
          w->next = new list;
          br = l;
          l=l->left;
          w=w->next = l;
          l = br;
          w->next=0;
          }
          
          if(l->right){
          (l->right)->inf.cod=l->inf.cod + "1";
          w->next = new list;
          br = l;
          l=l->right;
          w=w->next = l;
          l=br;
          w->next = 0;
          }
 
          e=e->next;
 
      }
Добавлено через 16 секунд
Но рабочий .
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru