Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.12.2019
Сообщений: 7

Создать список L3 из элементов, которые входят в список L1 и не входят в список L2

29.02.2020, 11:46. Показов 2021. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно создать список L3 из элементов, которые входят в список L1 и не входят в список L2, вернуть длину нового списка.

Есть код, не понимаю, как реализовать задание

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
 #include <iostream>
#include<conio.h>
using namespace std;
 
struct A
{
 
    int key;
 
};
 
struct B
{
    int key;
};
struct C
{
    int key;
};
 
 
struct ListA
{
    A a;
    ListA* next;
 
};
 
struct ListB
{
    B b;
    ListB* next;
 
};
 
struct ListC
{
    C c;
    ListC* next;
 
};
 
 
 
void Print(ListC* b)
{
    ListC* print = b;
 
    while (print)
    {
        cout << "[" << print << "] = " << print->c.key << endl;
        print = print->next;
    }
    cout << "NULL" << endl << endl;
}
 
void Init(ListA** begin)
{
    *begin = new ListA;
    A a[5] = { -3443,3452,-56783,784,5 };
 
    (*begin)->a.key = 20;
 
    ListA* end = (*begin);
    for (int i = 0; i < 5; i++)
    {
        end->next = new ListA;
        end = end->next;
        end->a = a[i];
        end->next = NULL;
    }
}
 
 
void Init(ListB** begin)
{
    *begin = new ListB;
    B b[5] = { -3443,3452,-56783,784,5 };
 
    (*begin)->b.key = 20;
 
    ListB* end = (*begin);
    for (int i = 0; i < 5; i++)
    {
        end->next = new ListB;
        end = end->next;
        end->b = b[i];
        end->next = NULL;
    }
}
 
/*
List* Change(List* b)
{
    List* last = NULL;
 
    while (b)
    {
        if (b->a.key < 0)
        {
            b->a.key *= -1;
            last = b;
        }
        b = b->next;
    }
    return last;
}
*/
int main()
{
    setlocale(LC_ALL, "Russian");
 
    ListA* begin = NULL;
    ListB* begin = NULL;
 
 
    Init(&begin);
    Print(begin);
    /*cout << "Адрес последнего изменения = " << Change(begin) << endl << endl;
    Print(begin); */ 
    _getch();
    return 0;
}
Добавлено через 2 часа 53 минуты
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
 
#include <iostream>
using namespace std;
 
struct ListA
{
    int value;
    ListA* next;
    ListA(int val = 0, ListA* p = NULL) //конструктор
    {
        value = val;
        next = p;
    }
};
 
struct ListB
{
    int value;
    ListB* next;
    ListB(int val = 0, ListB* p = NULL)
    {
        value = val;
        next = p;
    }
};
 
struct ListC
{
    int value;
    ListC* next;
    ListC(int val = 0, ListC* p = NULL)
    {
        value = val;
        next = p;
    }
};
 
ListA* Add_last(int n, ListA* head1)
{
    ListA* q = new ListA(n), * p = head1;
 
    if (head1 == NULL) return q; // если список пуст
    while (p->next != NULL) // «идем в конец списка»
        p = p->next;
    p->next = q;
    return head1;
}
 
ListB* Add_last(int n, ListB* head2)
{
    ListB* q = new ListB(n), * p = head2;
 
    if (head2 == NULL) return q;
    while (p->next != NULL)
        p = p->next;
    p->next = q;
    return head2;
}
 
ListC* Add_last(int n, ListC* head3)
{
    ListC* q = new ListC(n), * p = head3;
 
    if (head3 == NULL) return q;
    while (p->next != NULL)
        p = p->next;
    p->next = q;
    return head3;
}
 
ListA* Creat_list1(const int& N)
{
    cout << "Введите элементы списка L1" << endl;
    int elm;
    ListA* head1 = NULL;
    for (int i = 0; i < N; i++)
    {
        cin >> elm;
        head1 = Add_last(elm, head1);
    }
    return head1;
}
 
ListB* Creat_list2(const int& N)
{
    cout << "Введите элементы списка L2" << endl;
    int elm;
    ListB* head2 = NULL;
    for (int i = 0; i < N; i++)
    {
        cin >> elm;
        head2 = Add_last(elm, head2);
    }
    return head2;
}
 
//ListC* Creat_list3(const int& N)
//{
   
//}
 
void Print_list(ListA* head1)
{
    cout << "Вывод L1: " << endl;
    ListA* p = head1;
    if (p == NULL) puts("Список пустой");
    else
        while (p != NULL)
        {
            cout << p->value;
            p = p->next;
        }
}
 
void Print_list(ListB* head2)
{
    cout << "Вывод L2: " << endl;
    ListB* p = head2;
    if (p == NULL) puts("Список пустой");
    else
        while (p != NULL)
        {
            cout << p->value;
            p = p->next;
        }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int N;
    ListA* head1 = NULL;
    cout << "Введите число элементов L1: ";
    cin >> N;
    head1 = Creat_list1(N);
 
    ListB* head2 = NULL;
    cout << "Введите число элементов L2: ";
    cin >> N;
    head2 = Creat_list2(N);
    Print_list(head1);
    cout << endl;
    Print_list(head2);
}
Сделал три списка, в первые два вбиваются элементы. Как теперь сделать проверку элементов по заданию в третьем списке?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.02.2020, 11:46
Ответы с готовыми решениями:

Создать список L3 из элементов, которые входят в список L1 и не входят в список L2
Задание : Создать список L3 из элементов, которые входят в список L1 и не входят в список L2, вернуть длину нового списка. Вот что...

Создать список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в список L2
Описать процедуру, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в...

Создать список, элементы которого являются числа, которые входят в первый список и не входят в другой
Даны два списка целых чисел. Создать список, элементы которого являются числа, которые входят в первый список и не входят в другой.

3
103 / 82 / 78
Регистрация: 11.05.2015
Сообщений: 201
29.02.2020, 12:09
Лучший ответ Сообщение было отмечено whyblok как решение

Решение

Не очень ясно зачем создавать несколько реализаций линейных списков, если можно ограничиться одной:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct List
{
    int value;
    List* next;
    List(int val = 0, List* p = NULL)
    {
        value = val;
        next = p;
    }
};
// ...
List * listA = Create_list(N);
List * listB = Create_list(N);
После этого можно пробежаться по всем элементам списка A и проверить содержатся ли они в B:
C++
1
2
3
4
5
6
7
List * node = listA;
while (node)
{
    if (ListHasValue(listB, node->value) == false)
        Add_last(node->value, listC);
    node = node->next;
}
где функция ListHasValue имеет примерно следующую реализацию:
C++
1
2
3
4
5
6
7
8
List * node = list;
while (node)
{
    if (node->value == value);
        return true;
    node = node->next;
}
return false;
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
29.02.2020, 13:08
Цитата Сообщение от whyblok Посмотреть сообщение
struct A
struct B
struct C
{
зачем повторять по три раза? Ты вообще понимаешь, что такое struct или два года изучения Си ушли вникуда?

Добавлено через 39 секунд
удаляй struct b и struct c
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
29.02.2020, 15:50
Создать список из элементов первого списка, которые не входят в другой список
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.02.2020, 15:50
Помогаю со студенческими работами здесь

Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1 но не входят в список L2
Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1 но не входят в список...

Создать список из элементов первого списка, которые не входят в другой список
создать список L ,который включает в себя по одному разу елементы,которые входят в список L1 и не входят в список L2

Сформировать список Р, включив в него элементы списка Р1, которые не входят в список Р2
Как написать функцию или процедуру, которая формирует список Р, включив в него по одному разу элементы, которые входят в список Р1, но не...

Включить в список по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входят в другой
Составить программу,которая формирует список L,включив в него по одному разу элементы,которые входят в один из списков L1 и L2,но в то же...

Сформировать список L, включая в него элементы, которые входят в один из списков L1 или L2, но не входят в другой.
Описать функцию, которая формирует список L, включая в него элементы, которые входят в один из списков L1 или L2, но не входят в другой.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru