С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 04.07.2020
Сообщений: 63
1

Дерево на списке

15.03.2021, 10:55. Показов 950. Ответов 1

Author24 — интернет-сервис помощи студентам
Пытаюсь сделать обычное дерево на списках, видел реализацию один чайлд и один сиблинг, и реализацию обычных деревьев на векторах. Проблема в том, что при печати нормально выводиться только первые два, остальные это другие числа.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
 
#include <stdio.h>
 
 
struct Node
{
    void* m_pPayload;
    Node* m_pParent;
    Node* m_Children;
 
};
 
struct Person
{
    int m_Id;
};
 
//typedef bool (*NodeComparator)(void* pValue, void* pPayload);
 
/*bool Comp(void* pValue, void* pPayload)
{
    Person* pVal = (Person*)pValue;
    Person* pPay = (Person*)pPayload;
    if (pVal->m_Id == pPay->m_Id)
        return true;
    else
        return false;
}*/
 
 
Node* NewNode(void* pPayload)
{
    Node* pNode = new Node;
    pNode->m_pParent = nullptr;
    pNode->m_Children = 0;
    pNode->m_pPayload = pPayload;
    pNode->m_Children = nullptr;
    return pNode;
}
 
Person* NewPerson(int id)
{
    Person* p = new Person;
    p->m_Id = id;
    return p;
}
 
//Node* FindNode(Node* pParent, Node* m_pPayload, NodeComparator comparator)
 
 
 
void AppendChild(Node* pParent, Node* pNode)
{
    struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
 
    //struct Node* last = pParent;  /* used in step 5*/
 
    /* 2. put in the data  */
    new_node->m_pPayload = pNode;
 
    /* 3. This new node is going to be the last node, so make next of
          it as NULL*/
    new_node->m_Children = NULL;
 
    /* 4. If the Linked List is empty, then make the new node as head */
    if (pParent->m_Children == NULL)
    {
        pParent->m_Children = pNode;
       
    }
 
    /* 5. Else traverse till the last node */
    while (pParent->m_Children != NULL)
        pParent = pParent->m_Children;
 
    /* 6. Change the next of last node */
    pParent->m_Children = new_node;
    return;
 
}
 
 
void print(Node* head)
{
    struct Node* ptr;
    ptr = head;
    while (ptr != NULL)
    {
        printf("%d\n ", ((Person*)head->m_pPayload)->m_Id);
        head = head->m_Children;
    }
}
 
 
int main()
{
 
    Node* T = new Node;
 
    T = NewNode(NewPerson(5));
 
    AppendChild(T, NewNode(NewPerson(11)));
    AppendChild(T, NewNode(NewPerson(12)));
    AppendChild(T, NewNode(NewPerson(15)));
    AppendChild(T->m_Children, NewNode(NewPerson(15)));
    AppendChild(T->m_Children, NewNode(NewPerson(15)));
    AppendChild(T->m_Children->m_Children, NewNode(NewPerson(14)));
    
    
    print(T);
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2021, 10:55
Ответы с готовыми решениями:

Дерево в раскрывающемся списке??
Уважемые спецы мне нужен контрол типа imagecombo но элементы должны раскрываться как в TreeView,...

Получить уровень каждого объекта в списке (построить дерево?)
Имеется класс примерно такого вида: public class Item { public string ID { get;...

Наименьшее число в списке, наибольшее число в списке, количество чисел в списке
Составить программу, которая получает на вход последовательность целых чисел, и печатает на экране:...

Посчитать количество атомов в многоуровневом списке (в списке со вложенными списками)
Здравствуйте! Нужно написать программу, которая бы вычисляла, сколько всего атомов в списке...

1
200 / 236 / 33
Регистрация: 29.03.2019
Сообщений: 667
15.03.2021, 13:37 2
Цитата Сообщение от Mihrusha Посмотреть сообщение
обычное дерево на списках
Разверните суть затеи. Что это такое, дерево на списках? Имеется ввиду вложенные списки?

Добавлено через 1 минуту
И да, в c++ есть свои списки, деревья и много чего другого. Зачем велосипедить?
0
15.03.2021, 13:37
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2021, 13:37
Помогаю со студенческими работами здесь

Определить первый атом в списке, а если такого в списке нет, вывести nil
Помогите с написанием функции на lisp. 1. Функция которая определяет первый атом в списке, а если...

Найти в одном списке максимальный элемент, а в другом списке соответствующий ему по индексу
Здравствуйте! Помогите решить задачу - есть два cписка a = и b = . Необходимо найти из списка 'a'...

Как сделать так, чтобы выбранное в одном списке имя не отображалось в другом списке
Добрый день, хочу попросить вашей помощи: Есть таблица Эксель в ней идёт диапазон имён Ячейки...

По входной последовательности построить дерево бинарного поиска и распечатать дерево по уровням!
В файле input.txt хранится последовательность целых чисел. По входной последовательности построить...

Сформировать дерево Т и определить число вхождений параметра Е в дерево Т - Блок схема
Сформировать дерево Т и определить число вхождений параметра Е в дерево Т. Вот решение задачи,...

Бинарное дерево: как происходит добавления элемента в дерево с двумя параметрами
Здравствуйте! Прошу помощи у опытных программистов...)))) Есть класс дерево: class class1 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru