Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2014, 19:31   #1
Hanja
Новичок
Джуниор
 
Регистрация: 09.11.2014
Сообщений: 1
Восклицание Небинарное дерево

Трассировка программы, не содержащей рекурсивных
вызовов и повторяющихся имен процедур, распечатана в виде
списка выполняемых процедур. Процедура попадает в список, если
к ней произошло обращение из вызывающей процедуры либо возврат
управления из вызванной ей процедуры. Структура программы
такова, что каждая вызываемая процедура вложена в вызывающую
ее процедуру. Начало и окончание программы должны быть в
головной процедуре. Известен объем памяти, который требуется
для загрузки каждой процедуры. При выходе из процедуры
занимаемая ей память освобождается. Построить и выдать дерево
вызовов процедур. Определить размер памяти, необходимый для
работы программы, и цепочку вызовов, требующую максимальной
памяти.

Имеется вот такая задача. Никак не могу подступиться к ее решению. В настоящее время имею программу, создающую небинарное дерево, и выводящую его на экран.
Код:
#include <iostream>
 
#include <stdlib.h>
 
using namespace std;
 
//using namespace system
 
struct Tree {
 
int id; //уникальное значение
 
int level; //уровень в иерархии
 
int count_son; //количество сыновей
 
struct Tree** son; //массив указателей на сыновей
 
};
 
/*---------Создание дерева----------*/
 
struct Tree *createTree(struct Tree *node, int id, int level){
 
//node = new Tree;
 
node->id = id;
 
node->level = level;
 
cout << "\nKol. sons (" << (node->level) << "-" << (node->id) << "): ";
 
cin >> (node->count_son);
 
node->son = new struct Tree *[node->count_son];
 
 
 
level++;
 
for(int i = 0; i < ( node->count_son); i++){
 
node->son[i] = new Tree;
 
node->son[i]->id = id + i;
 
node->son[i]->level = level;
 
}
 
for(int i = 0; i < (node->count_son); i++)
 
createTree(node->son[i], id + i, level);
 
return node;
 
}
 
/*---------Вывод дерева----------*/
 
void printTree(struct Tree *node){
 
if(node){
 
for(int i = 0; i < (node->level); i++)
 
cout << "| ";
 
if(node->son != NULL)
 
cout << "[+]";
 
cout << "(" << (node->level) << "-" << (node->id) << ")" << endl;
 
if((node->count_son) != 0)
 
for(int i = 0; i < (node->count_son); i++)
 
printTree(node->son[i]);
 
}
 
}
 
 
 
int main()
 
{
 
Tree *root;
 
root = new Tree;
 
root = createTree(root, 0, 0);
 
printTree(root);
system("pause"); 
return 0;
 
 
}
Помогите переделать данную программу для решения моей задачи
Hanja вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дерево на C# No_Comments Помощь студентам 8 26.04.2013 21:22
Дерево ser70 Общие вопросы C/C++ 6 09.11.2012 21:17
B+ дерево! megaster Помощь студентам 0 10.12.2011 17:01
Я дерево Кукла_колдуна Паскаль, Turbo Pascal, PascalABC.NET 0 20.03.2011 23:07
Дерево в С# vedro-compota C# (си шарп) 5 07.11.2010 14:02