Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ несовместимость типов http://www.cyberforum.ru/cpp-beginners/thread827389.html
помогите разобраться, передаю в функцию update_table массив указателей на фигуры, для каждой из которых должна вызываться add_to_table. какие аргументы должна содержать функция add_to_table?? ...
C++ Преобразование С++ Не знаю как разрулить один ньюанс. Есть динамический массив симолов.(char mass=new char; ) Есть динамический массив даблов.(double chisla=new double; ) я ввожу массив mass с клавиатуры и... 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...
C++ Структуры.Вывести список Здраствуйте. Помогите,пожалуйста,с програмой, немного не понимаю как сделать В отделе кадров хранится список преподавателей университета, в котором указано Ф.И.О. преподавателя, его возраст,... подробнее

Показать сообщение отдельно
ninja2
814 / 188 / 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 минуты
Я так понимаю интрузивный это встроеный список, а не интрузивный это кода просто передается елемент, а затем место выделяется под список. Если это так, то разница какая в них? Это ж одно и тоже. В любом случае место выделяется, просто записи разные. Там в самом классе выделяется, а в интрузивном нужно в программе выделить. хз.? Никак не допру.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru