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

Как можно добавить в класс два списка? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алгоритм построения чертежа http://www.cyberforum.ru/cpp-beginners/thread966205.html
Добрый день, пытаюсь реализовать алгоритм автоматического построения чертежа в зависимости от прямоугольника. Встал в тупик в самом алгоритме и рациональном хранении данного чертежа. На данный момент есть черновой вариант через один массив, то есть сначала отрисовывается верхняя часть чертежа в длину , потом нижняя и с помощью формулы вычисляется количество элементов по диагонали. Но данный...
C++ Расстояние между двумя ближайшими городами Помогите пжалста. Как бы тупо это не звучало, пжалста сделайте эту задачу для меня:wall: В некотором государстве n городов. Найти расстояние между двумя ближайшими городами от города A. Входные данные В первой строке входного файла три числа: N, M, A (3≤N≤100), где N - количество вершин графа, M – количество ребер, A - начальная вершина. В следующих M строках заданы по 3 числа, номера вершин и... http://www.cyberforum.ru/cpp-beginners/thread966172.html
C++ Не получается скомпилировать и использовать файл .lib
Хаюшки, мечтал сделать свою мини-библиотечку и за одно научиться работать с lib файлами, но нормального руководства нет, все либо дотошно пытаются объяснить как сделать ее в Wizard'е вижлы, либо как подключать готову d3dx.lib например. Подкорректируйте мои начинания, в мастере VS9 функции объявлены как extern может ошибка в этом ? : Заголовочный файл converter.h #pragma once #define...
C++ Сравнить два поля узла
Имеется двусвязный список фишек домино. В нём два поля: левое и правое числа фишки домино. Нужно пробежать такой цикл, чтобы выяснить соответствует ли правилам игры цепочка: т.е. равно ли правое поле текущей фишки (second_f) левому полю следующей фишки (first_f). Пробовал этот, что-то не так while(flow_number) { buf = flow_number; while(buf = buf -> next)
C++ Удаление строк (символов) из файла http://www.cyberforum.ru/cpp-beginners/thread966149.html
Подскажите, пожалуйста как реализовать программно (1) исключение из исходного текстового файла подстрок, являющихся цепочками заданного языка. И (2) оставляет в исходном текстовом файле только цепочки заданного языка. Вот код для задания символов языка: #pragma hdrstop #pragma argsused #include <tchar.h> #include <iostream.h> #include <stdio.h> #include <string>
C++ не получается, хоть убеи :С ___________________________ Stellaj.txt : ___________________________ StellajZ abc_sklad Velosiped 3.4 2 polka7 KUB подробнее

Показать сообщение отдельно
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
02.10.2013, 12:31     Как можно добавить в класс два списка?
Вот моё примерное видение твоего класса:
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
struct ListElem
{
    // поля данных элемента
    int childCnt;
    ListElem *next, *owner;
};
class myClass
{
private:
ListElem* list1, list2;
public:
ListElem* getList1()
{
return list1;
}
ListElem* getList2()
{
return list2;
}
myClass()
{
    list1=NULL; list2=NULL;
}
void addElemToList1(ListElem* elem)
{
   ListElem* T=list1;
   if(T) while(T->next) T=T->next;
   else list1=elem;   
}
void addElemToList2(ListElem* elem )
{
   ListElem* T=list2;
   if(T) while(T->next) T=T->next;
   else list1=elem;     
}
void addLink(ListElem* owner, ListElem* child) //связь 1 ко многим. в кач-ве owner передать элемент из list1, в кач-ве child передать элемент из list2
//многократній вызов этой ф-ции для одного элем owner и разных child дает связь 1 ко многим
{
child->owner=owner;
owner->childCnt++;
}
ListElem** getChildren(ListElem* owner) //в кач-ве owner передать элемент из list1
//возвращает массив детей
{
    if(!owner) return NULL;
    if(owner->childCnt==0) return NULL;
    ListElem *T=list2;
    ListElem **children=new ListElem*[owner->childCnt];
    int pos=0;    
   
    while(T)
    {
    if(T->owner==owner) 
        {
        children[pos]=T;
        pos++;
        }
    }
    return children;    
}
void printElem(ListElem *elem)
{
 //здесь реализовуешь вывод на экран полей в нужной тебе форме
}
void printLinks()
{
    ListElem **children, *T=list1;
    while(T)
    {
        children=getChildren(T);        
        cout<<"owner: ";
        printElem(T);
        cout<<"children: ";
        for(int i=0;i<T->childCnt;i++) printElem(children[i]);
        T=T->next;
    }
}
 
};
 
Текущее время: 09:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru