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

Интрузивный и не интрузивный список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ несовместимость типов http://www.cyberforum.ru/cpp-beginners/thread827389.html
помогите разобраться, передаю в функцию update_table массив указателей на фигуры, для каждой из которых должна вызываться add_to_table. какие аргументы должна содержать функция add_to_table?? .... void add_to_table(table *T,figure *F) { char *B; B=&(T->A); *(B+8*(8-(F->y))+(F->x-65))=F->type; }
C++ Преобразование С++ Не знаю как разрулить один ньюанс. Есть динамический массив симолов.(char mass=new char; ) Есть динамический массив даблов.(double chisla=new double; ) я ввожу массив mass с клавиатуры и выполняю проверку на числа. если я ввёл число,то записываем это число в массив chisla. но есть одно НО,которое я не знаю как решить. к примеру я введу 146. 1 - это нулевой элемент массива chisla,4 -... http://www.cyberforum.ru/cpp-beginners/thread827374.html
C++ метод Ньютона
Дано уравнение f(x)=0. Найти с точностью e корень уравнения содержащиеся на отрезке . Составить программу для нахождения корня по методу Ньютона. Я видела, что кто-то скидывал решение, но не могу открыть файл, скопируйте пожалуйста программу!
Вычислить значение выражения C++
В основной программе ввести входные данные, и вызвав собственные функции, вычислить значение выражения и результаты
C++ Исправьте ошибку для ленточной стр. симетр. матрицы http://www.cyberforum.ru/cpp-beginners/thread827359.html
Дана разреженная ленточная матрица. Найти матрицу, обратную к ней. Помогите исправить ошибку #include "stdafx.h" #include <iostream> #include <cstdlib> using namespace std; void Input(double ** array, int size) {
C++ Структуры.Вывести список Здраствуйте. Помогите,пожалуйста,с програмой, немного не понимаю как сделать В отделе кадров хранится список преподавателей университета, в котором указано Ф.И.О. преподавателя, его возраст, должность, факультет, на котором работает преподаватель. Вывести список доцентов младше 55 лет. #include <iostream> using namespace std; struct { char fio; int vik; подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
04.04.2013, 16:35  [ТС]     Интрузивный и не интрузивный список
Здорова!
Я тут всетаки домучил как бы эти списки и от свои построил два с примерами интрузивный и не интрузивный.
Как думаете правильно я построил? Интересно мнение гуру.
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
//intryzivnui cpicok
#include <iostream>
using std::cout;
using std::endl;
#include <cstdlib>
using std::exit;
 
//#include "intryctiv.h"
 
//eto intryzivnui cpicok tak ckazat6 vctraivaemui
struct List
{
    List *next, *prev;
    int val;
    List(int a):val(a),next(0),prev(0){}
};
 
struct intr
{
    List* data;
public:
    //konctryktor po ymolchaniyu
    intr():data(0){}
    void add(List* a)
    {
        if(data==0)
        {
            cout <<"nety elementov"<<endl;
            data=a;
            data->next=0;
            data->prev=0;
        }
        else
        {
            cout <<"ect6 elementu"<<endl;
            data->next=a;
            a->prev=data;
            data=a;
        }
    }
    
    //vuvod c konca;
    void print()
    {
        if(data==0)
        {
            cout <<"cpicok pyct"<<endl;
        }
        else
        {
            cout <<"ne pyct req vuzov"<<endl;
            printHelper(data);
        }
    }
    void printHelper(List* ptr)
    {
        if(ptr!=0)
        {
            cout <<ptr->val<<' ';
        }
        if(ptr->prev!=0)
        {
            printHelper(ptr->prev);
        }
    }
};
 
//ne intryzivnui cpicok
struct Listn
{
    Listn *next, *prev;
    int val;
    Listn(int a):val(a),next(0),prev(0){}
};
 
class listn
{
    Listn * data;
public:
    listn():data(0){}
    
    void add(int a)
    {
        if(data==0)
        {
            cout <<"cpicok pyck"<<endl;
            data=new Listn(a);
        }
        else
        {
            cout <<"cpicok ne pyck"<<endl;
            addHelper(data,a);
        }
    }
    void addHelper(Listn* ptr,int& a)
    {
        if(ptr->next==0)
        {
            ptr->next=new Listn(a);
        }
        else
        {
            addHelper(ptr->next,a);
        }
    }
    
    void print()
    {
        if(data==0)
        {
            cout <<"cpicok pyct"<<endl;
        }
        else
        {
            printHelper(data);
        }
    }
    void printHelper(Listn* ptr)
    {
        if(ptr!=0)
        {
            cout <<ptr->val<<' ';
            if(ptr->next!=0);
            {
                printHelper(ptr->next);
            }
        }
    }
};
 
 
 
int main()
{
//не интрузивный тест.
    listn l;
    l.add(5);
    l.add(6);
    l.add(7);
    l.print();
    cout <<endl;
    
    
    //интрузивный тест.
    intr ne;
    
    List a(3);
    ne.add(&a);
    
    List b(4);
    ne.add(&b);
    ne.print();
    
    cout <<endl;    
    
    return 0;
}
Добавлено через 3 минуты
Я так понимаю интрузивный это встроеный список, а не интрузивный это кода просто передается елемент, а затем место выделяется под список. Если это так, то разница какая в них? Это ж одно и тоже. В любом случае место выделяется, просто записи разные. Там в самом классе выделяется, а в интрузивном нужно в программе выделить. хз.? Никак не допру.
 
Текущее время: 05:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru