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

Динамический список динамических списков - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Односвязный список. Поменять местами элементы http://www.cyberforum.ru/cpp-beginners/thread310460.html
Привет. Есть односвязный список. Например: 5 элементов, поменять местами 2 и 3 Как поменять местами элементы p1 и p2. Что я сделал? нашел позиции этих p1 и p2 через циклы. Как поменять? Я думаю, что нужно поменять указатели, как конкретно их поменять? Что на что должно указывать? Напишите кодом, пожалуйста. void list::change(int first,int last) { nodes *p1 = new nodes;
C++ Возврат значения по ссылке Долго гуглил, но что-то так и не понял. Почему слева от знака = может использоваться только функция, возвращающая ссылку? http://www.cyberforum.ru/cpp-beginners/thread310451.html
Осуществить движение окружности по дуге C++
Условие: Осуществить такое движение,при котором окружность движется по-другой окружности,Оставаясь внутри ее. 1е) Я понимаю что таких как мы много и как мы достали нормальных людей 2е) Я не хочу орать :"помогите иначе мне хана и тп." Я понимаю что таких же о5 тут много 3е) Я понимаю что программисты коих здесь я думаю обитает не мало ленивые люди( не как сам человек,а как рабочий) ибо все...
C++ Посмотрите код пожалуйста...
#include <stdio.h> #include <stdlib.h> int main() { int n,*b,i,k; double x; float **M;// двухмерная матрциа
C++ Построение многоугольника http://www.cyberforum.ru/cpp-beginners/thread310428.html
На клетчатой бумаге нарисован многоугольник, стороны которого по линиям сетки.В каждую клеточку многоугольника вписано число равное количеству сторон данной клетки, которые принадлежат сторонам многоугольника.Многоугольник стерается,и на листке остаются только числа.Восстановить многоугольник.
C++ Массив Подскажите, что не так делаю: #include <iostream> using namespace std; int main () { int n, m, i, j, k, n1, m1; float mas_U; подробнее

Показать сообщение отдельно
viktorrrr
42 / 42 / 1
Регистрация: 11.02.2010
Сообщений: 358
02.06.2011, 21:40  [ТС]     Динамический список динамических списков
Цитата Сообщение от taras atavin Посмотреть сообщение
viktorrrr, а зачем нужен списков списков? Для двумерности по аналогии с массивом массивов?

Я тоже, кстати, не понимаю). Но мне препод дал такое задание). Могу, если че, задание скинуть) . Плюс еще у меня есть код рабочий динамического списка. Вот никак туда подсписок тоже воткнуть мозгов не хватает. Если есть возможность помочь, могу все подробно расскзать и обяснить)

Добавлено через 6 часов 6 минут
Это есть заголовочный файл.


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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
#ifndef MYNEWLIST_H
#define MYNEWLIST_H
using namespace std;
struct LIST {
 
    int info;
    LIST *next;
    
};
 
struct  LISTpod{                   //обявление подсписка
    float infoP;
    LISTpod *nextP;              //Нигде в программе на данный момент не включено
 
};
 
 
class myList{
public:
    void Initial()    // Начальные значения НУЛЛ. Указатель
{
    
    head = new LIST;
    head->next=NULL;                      //Указатель на следующий элемент списка обнуляемс
 
}
    //===================================
    bool Empty()
{
    if (head->next==NULL)  //Если список пуст
    return 1;
    else
    return 0;
}
 
    LIST *Search(int num)
{
    
    Prev=head;
    LIST *tmp=head->next;
    while(tmp!=NULL && tmp->info!=num)
    {
    Prev=tmp;
    tmp=tmp->next;
    }
    return tmp;
    cout<<tmp;
 
}
 
    //====================================
    int Del(int num)
{
 
    LIST *current=Search(num);
    if (current!=NULL)
    {
    Prev->next=current->next;
    delete current;
    return 1;
    }
    return 0;
 
}
    //==============================================
    void Show()
{
 
    LIST *tmp=head->next;
    cout<< endl << "Элементы списка:" << endl;
    while(tmp!=NULL)
    {
    cout << tmp->info << " ";
    tmp=tmp->next;
    }
    cout << endl;
 
}
 
    //==================================================
    int AddAfter(int num, int point)
{
 
    if (Empty()==1)
    {
    LIST *tmp=new LIST;
    head->next=tmp;
    tmp->info=num;
    tmp->next=NULL;
    return 1;
    }
    LIST *current=Search(point);
    if(current!=NULL)
    {
    LIST *tmp=new LIST;
    tmp->next=current->next;
    current->next=tmp;
    tmp->info=num;
    return 1;
    }
    return 0;
 
}
 
    //=======================================================
    void DelAll()
{
 
    LIST *tmp;
    while(head->next!=NULL)
    {
    tmp=head;
    head=head->next;
    delete tmp;
    }
 
}
    //====================================
    bool AddBefore(int num, int point)
{
 
    LIST *current=Search(point);
    if (current!=0)
    {
    LIST *tmp=new LIST;
    Prev->next=tmp;
    tmp->next=current;
    tmp->info=num;
    return true;
    }
    return false;
 
}
 
private:
    LIST *head,*Prev;
};
 
 
class myListfloat{
public:
    void Initial()    // Начальные значения НУЛЛ. Указатель
{
 
    head = new LIST;
    head->next=NULL;                      //Указатель на следующий элемент списка обнуляемс
 
}
    //===================================
    bool Empty()
{
    if (head->next==NULL)
    return 1;
    else
    return 0;
}
 
    LIST *Search(int num)
{
 
    Prev=head;
    LIST *tmp=head->next;
    while(tmp!=NULL && tmp->info!=num)
    {
    Prev=tmp;
    tmp=tmp->next;
    }
    return tmp;
    
 
}
 
    //====================================
    int Del(int num)
{
 
    LIST *current=Search(num);
    if (current!=NULL)
    {
    Prev->next=current->next;
    delete current;
    return 1;
    }
    return 0;
 
}
    //==============================================
    void Show()
{
 
    LIST *tmp=head->next;
    cout<< endl << "Элементы списка:" << endl;
    while(tmp!=NULL)
    {
    cout << tmp->info << " ";
    tmp=tmp->next;
    }
    cout << endl;
 
}
 
    //==================================================
    int AddAfter(int num, int point)
{
 
    if (Empty()==1)
    {
    LIST *tmp=new LIST;
    head->next=tmp;
    tmp->info=num;
    tmp->next=NULL;
    return 1;
    }
    LIST *current=Search(point);
    if(current!=NULL)
    {
    LIST *tmp=new LIST;
    tmp->next=current->next;
    current->next=tmp;
    tmp->info=num;
    return 1;
    }
    return 0;
 
}
 
    //=======================================================
    void DelAll()
{
 
    LIST *tmp;
    while(head->next!=NULL)
    {
    tmp=head;
    head=head->next;
    delete tmp;
    }
 
}
    //====================================
    bool AddBefore(int num, int point)
{
 
    LIST *current=Search(point);
    if (current!=0)
    {
    LIST *tmp=new LIST;
    Prev->next=tmp;
    tmp->next=current;
    tmp->info=num;
    return true;
    }
    return false;
 
}
 
private:
    LIST *head,*Prev;
    LIST *headp;
};
#endif


Соббсно, исполняемая часть
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
#include<iostream>
#include"mynewList.h"
 
using namespace std;
 
int main()
{
    system("cls");   //очищение окна консоли
 
    setlocale(LC_ALL,"Russian");
    myList *l=new myList;
    l->Initial();
    int num,point;
    char otv,otv2;
    do
    {
 
       cout << "1. Добавление в основной список" << endl
           <<"2 Начать заполнять подсписок чисел с плавающей запятой"<<endl
        << "3. Удаление" << endl
        << "4. Вывод списка" << endl
        << "0. Выход" << endl
        << " = ";
        cin >> otv;
        switch(otv)
        {
        case '1':
            //добавление элемента в список основной, если основной список пустой
            //Нельзя добавить
 
 
 
            cout << endl << "Введите Номер списка = ";
            cin >> num;
            if (l->Empty()==1)
                l->AddAfter(num,0);
            
            //================================================
            //=================================================
            //ЦИКЛ для заполнения подсписка
 
 
 
 
            //==========================================================
            //=========================================================
            else
 
            {
 
                cout << endl << "1. Добавить перед" << endl
                << "2. Добавить после" << endl
                << " = ";
                cin >> otv2;
                switch(otv2)
                {
                case '1':
 
                    cout << endl << "Перед каким элементом добавить = ";
                    cin >> point;
                    if (l->AddBefore(num,point)==1)
                    cout << endl << "Элемент добавлен в список" << endl;
                    else
                    cout << endl << "Такого элемента не существует" << endl;
                    break;
 
                case '2':
 
                    cout << endl << "После какого элемента добавить = ";
                    cin >> point;
                    if (l->AddAfter(num,point)==1)
                    cout << endl << "Элемент добавлен в список" << endl;
                    else
                    cout << endl << "Такого элемента не существует" << endl;
                    break;
 
                default:
 
                    cout << endl << "Ошибка" << endl;
                    break;
 
                }
 
            }
            break;
 
        case '3':
 
            if (l->Empty()==1)
            cout << endl << "Список пуст" << endl;
            else
            {
            cout << endl << "Удаляемый элемент = ";
            cin >> num;
            if (l->Del(num)==1)
            cout << endl << "Элемент удален" << endl;
            else
            cout << endl << "Такого элемента не существует" << endl;
            }
            break;
 
        case '4':
 
            if (l->Empty()==1)
            cout << endl << "Список пуст" << endl;
            else
                l->Show();
            break;
        case '5':
            cout<<"Введите искомый элемент"<<endl;   //поиск элемента
            cin>>num;
            if(l->Empty()==1)   
                cout<<"Список пуст"<<endl;
            else
                l->Search(num);
            cout<<l->Search(num);
            
            break;
            
 
        case '0':
        
 
            l->DelAll();
            break;
 
        default:
 
            cout << endl << "Ошибка" << endl;
            break;
 
        }
 
    }while(otv!='0');
    delete l; //освобождаем память
    cin.get(); //Ожидаем нажатия клавиши любой
 
}


Вот как вот в этот список включить подсписок??
Программ должна работать следующим образом
1) Нажмите цифру 1, шоб забить первый элемент списка
// Тока мы эту цифру забили, т.е первый элемент основного списка, новый цикл должне вызваться для заполнения подсписка(к примеру, вещественных чисел) . Ну, конечно, должны быть доступны все стандартные операции со списком.
//Заканчиваем работу с подсписком, снова выходит к нам цикл основного списка(1)Введите номер списка(к примеру 2 вводим) и повторяется прежняя операция с подсписком вещественных чисел.


Ну и , конечно, при удалении элемента основного списка, должен удаляться и подсписок. Ну, думаю, тут проблем возникнуть не должно, если стабильно будет работать подсписок.


Помогите!!!!! Очччень надо. Список выше рабочий.
Не смогу это сделать, придется кучу бабок платить за пересдачу, возможно, не одну((((. Буду глубоко благдарен
 
Текущее время: 22:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru