Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
1

Сделать список элементом списка

16.06.2018, 12:05. Показов 437. Ответов 5
Метки нет (Все метки)

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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
class CList
{
    struct list
    {
        int info;
        struct list *next;
    };
    struct list *head;
    struct list *tamp;
public:
    CList();
    ~CList();
    void AddItem(int );
    void DisplayList();
    void ReleaseList();
    void CListDeleteFirstZero();
};
 
 
 
CList::CList()
{
    head=tamp=NULL;
}
 
CList::~CList()
{
    ReleaseList();
}
 
void CList::AddItem(int s)
{
    struct list *newItem;
    newItem = new struct list;
    newItem->info = s;newItem->next =NULL;
        if (head==NULL)
            {
                head=tamp=newItem;
                head->next = NULL;
            }
            else
            {
                tamp->next=newItem;
                tamp=tamp->next;
            }
 
    }
 
 
void CList::DisplayList()
{
    struct list *p;
    p=head;
    while (p!=NULL)
    {
        printf("%d->",p->info);
        p=p->next;
    }
    printf("NULL\n");
}
Как запихать его в список (имеется представление, но хотелось бы наверняка)

"Как я себе представляю":
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
class Mlist
{
    struct listi
    {
        CList *List;
        struct listi *next;
    };
    struct listi *hed, *tap;
public:
    Mlist();
    void AddList();
    void ShowLists();
};
 
Mlist::Mlist()
{
    hed=tap=NULL;
}
 
void Mlist::AddList()
{
    struct listi *newitem= new struct listi;
    int i,n;
    cout<<endl<<"You add new list now"<<endl;
    cout<<"Add number of elements"<<endl;
    cin>>n;
    for (i=1;i<=n;i++)
        {
            cout<<"Add Item: ";
            int m; cin>>m;
            newitem->List->AddItem(m);
        }
    if (hed==NULL)
                {
                    hed=tap=newitem;
                    hed->next = NULL;
                }
                else
                {
                    tap->next=newitem;
                    tap=tap->next;
                }
}
 
void Mlist::ShowLists()
{
    struct listi *d=hed;
    while (d!=NULL)
    {
        cout<<"List: ";
        d->List->DisplayList();
    }
    cout<<"List over"<<endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2018, 12:05
Ответы с готовыми решениями:

Перенести из списка в новый список все элементы, находящиеся между вершиной и элементом с минимальным значением
При запуске индивидуального задание, программа перестаёт работать. Помогите, пожалуйста, найти...

Создать линейный односвязный список из вещественных чисел. Удалить из списка элемент перед каждым элементом со значен
Создать линейный односвязный список из вещественных чисел. Удалить из списка элемент перед каждым...

Вставить в линейный список перед элементом с заданным значением другой линейный список
Как можно вставить в линейный список перед элементом с заданным значением другой линейный список?...

Проверка, пуст ли список, очистка списка, печать списка в направлении от верха к низу
Доброго вечера. Пожалуйста помогите разобраться с заданием на структуры, и подскажите с чего здесь...

5
1467 / 1008 / 456
Регистрация: 30.10.2017
Сообщений: 2,798
16.06.2018, 12:14 2
Сделайте список шаблоном, тогда можно будет не изменяя код делать хоть список, содержащий список, содержащий список.
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
16.06.2018, 12:38  [ТС] 3
QuakerRUS, и как это сделать прям грамотно?
0
1467 / 1008 / 456
Регистрация: 30.10.2017
Сообщений: 2,798
16.06.2018, 12:52 4
Code_idiot, везде, где указан тип данных (в данном случае int) подставить шаблонный тип.
0
6 / 5 / 4
Регистрация: 24.11.2017
Сообщений: 143
16.06.2018, 13:08  [ТС] 5
QuakerRUS, а можно код т.к. я немножко нубло и не понимаю необходимость данного действия
0
1467 / 1008 / 456
Регистрация: 30.10.2017
Сообщений: 2,798
16.06.2018, 14:54 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
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
using namespace std;
 
template<class T>
struct list
{
    T info;
    struct list *next;
};
 
template<class T>
class CList
{
    template<class T2> friend ostream& operator<<(ostream&, const CList<T2>);
    struct list<T> *head;
    struct list<T> *tamp;
public:
    CList();
    ~CList();
    void AddItem(T);
};
 
template<class T>
CList<T>::CList()
{
    head = tamp = NULL;
}
 
template<class T>
CList<T>::~CList()
{
}
 
template<class T>
void CList<T>::AddItem(T s)
{
    struct list<T> *newItem;
    newItem = new struct list<T>;
    newItem->info = s; newItem->next = NULL;
    if (head == NULL)
    {
        head = tamp = newItem;
        head->next = NULL;
    }
    else
    {
        tamp->next = newItem;
        tamp = tamp->next;
    }
 
}
 
template<class T>
ostream& operator<<(ostream& os, const CList<T> l)
{
    struct list<T> *p;
    p = l.head;
    while (p != NULL)
    {
        os << p->info << "->";
        p = p->next;
    }
    os << "NULL\n";
 
    return os;
}
 
int main()
{
    CList<CList<int>> master_list;
    CList<int>* list;
 
    for (int i = 0; i < 10; ++i)
    {
        list = new CList<int>;
 
        for (int j = 0; j < 10; ++j)
            list->AddItem(i * 10 + j);
 
        master_list.AddItem(*list);
        delete list;
    }
 
    cout << master_list;
    
    system("pause");
    return 0;
}
0
16.06.2018, 14:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2018, 14:54
Помогаю со студенческими работами здесь

Лямба вызов (Получить разность между k - м элементом списка х и n - м элементом списка y)
Помогите пожалуйста Составить не рекурсивную программу в форме лямбда вызова. Получить разность...

Определить отношение которое выполняется, если Х является энным элементом списка Список
Доброго времени суток! Есть задание: (а) Используя отношение conc, напишите цель,...

Разpаботать процедуpы: P1 - ввода списка слов из текстового файла F1 в двунапpавленный список с элементом
В текстовом файле F1 находится список слов (по одному на стpоке, не более 20 символов). ...

Получить разность между k-м элементом списка х и n-м элементом списка y
1. Даны два числовых списка x и Y, k и n - целые числа (k, n = 1, 2, 3). Получить разность между...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru