Дерево

Тема в разделе "Общие вопросы по С и С++", создана пользователем Hanja, 9 ноя 2014.

  1. Hanja

    Hanja New Member

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

    В данный момент у меня есть программа, которая создает и выводит на экран небинарное дерево. Мне нужна помощь в переделке программы для решения моей задачи.
    Код (C++):
    #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;


    }
     
Загрузка...
Похожие Темы - Дерево
  1. MrSpoon
    Ответов:
    0
    Просмотров:
    1.055
  2. Maestresa
    Ответов:
    2
    Просмотров:
    1.667
  3. KalinaK
    Ответов:
    1
    Просмотров:
    1.689
  4. jaGGa
    Ответов:
    1
    Просмотров:
    1.420
  5. Надя
    Ответов:
    3
    Просмотров:
    1.550

Поделиться этой страницей