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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ВСЕМ ПРИВЕТИК
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 11
#1

Списки. Входит ли один список в другой - C++

08.05.2014, 16:22. Просмотров 734. Ответов 2
Метки нет (Все метки)

Задание - Проверить, входит ли список l1 в список l2.

Термином "список" обозначен линейный список. Исходные и результирующие списки размещаются в файлах подходящего типа.

Ребятушки, надежда на вашу помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 16:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Списки. Входит ли один список в другой (C++):

Сформировать список L включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входит во второй из них - C++
Добрый вечер! Помогите, пожалуйста, начинающей программистке решить следующую задачу: Разработать шаблон класса для работы с...

Написать рекурсивную функцию, проверяющую, входит или не входит элемент Е в не пустой список L, состоящий из вещественных чисел - C++
Помогите решить задачу, очень нужно Написать программу в которой объявить рекурсивную функцию, проверяющую, входит или не входит...

Описать функцию, которая будет проверять входит ли список l1 в список l2 - C++
Здравствуйте, нужно Описать функцию, которая будет проверять входит ли список l1 в список l2. Ни как не могу понять как это сделать. ...

Сформировать список l, включив в него по одному разу элементы, которые входят. В один из списков l1 или l2. Но не входят в другой - C++
Добрый вечер! Собственно суть задачи такова: Я не совсем поняла списки, вы не могли бы помочь разобраться в программе? есть некие...

Дан массив из 10 элементов.Перенести в один другой массив четные числа.Затем перенести в еще один другой масси - C++
Дан массив из 10 элементов.Перенести в один другой массив четные числа.Затем перенести в еще один другой массив нечетные числа.Помогите с...

Если елементы массива соседние одинаковы то один из них заменяется на 0 а другой увеличиваетмя на один - C++
#include "stdafx.h" #include<string> #include <cmath> #include <iostream> #include<locale> using namespace std; const int...

2
ВСЕМ ПРИВЕТИК
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 11
10.05.2014, 01:39  [ТС] #2
Актуально. Ребят, помогите.
0
ВСЕМ ПРИВЕТИК
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 11
15.05.2014, 21:41  [ТС] #3
В общем, есть готовый вариант. Скажите, можно ли сделать так, чтобы в списки для сравнения можно было записывать всё что угодно, а не только цифры ? Или я чего-то не понимаю, и так и должно быть ? Что нужно исправить ?

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
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <conio.h>
 
#define MAX_LEN 1000
 
typedef struct link
{
    struct link * next;
    double value;
} link_t;
 
// создание пустого элемента списка
static link_t * create_link()
{
    link_t * l = (link_t *)malloc(sizeof(link_t));
    l->next = NULL;
    l->value = 0;
 
    return l;
}
 
// удаление списка
static void delete_list(link_t ** l)
{
    if (l && *l)
    {
        delete_list(&((*l)->next));
        free(*l);
        *l = NULL;
    }
}
 
// создание списка из файла
static void create_list_from_file(link_t ** l, FILE * file)
{
    double c;
    fscanf(file, "%lf", &c);
 
    if (!feof(file))
    {
        (*l) = create_link();
        (*l)->value = c;
 
        create_list_from_file(&((*l)->next), file);
    }
}
 
// печать списка
static void print_list(link_t * l)
{
    link_t * current = l;
 
    while (current)
    {
        printf("%lf ", current->value);
        current = current->next;
    }
 
    printf("\n");
}
 
// проверка содержит ли первый список второй
static bool contains(link_t * l, link_t * w)
{
    // если списпи пустые
    if (l == NULL || w == NULL)
        return false;
 
    link_t * currentl = l, * currentw = w;
 
    // сравниваем два слова
    while (currentw && currentl)
    {
        if (currentl->value != currentw->value)
            break;
 
        currentl = currentl->next;
        currentw = currentw->next;
    }
 
    return !l ? false : currentw ? contains(l->next, w)  : true;
}
 
// запрашивание имени файла и чтение списка из него
static bool readList(link_t ** l)
{
    char fileName[255];
 
    // запрашиваем имя файла
    printf("Введите имя файла: \n");
    scanf("%s", fileName);
 
    // открываем файл
    FILE * file = fopen(fileName, "r");
    if (!file)
    {
        printf("Не удалось открыть файл %s\n", fileName);
        return false;
    }
 
    // создаем список читая его из файла
    create_list_from_file(l, file);
    // закрываем файл
    fclose(file);
 
    return true;
}
 
int main()
{
    // установление русского языка в консоли
    setlocale(LC_ALL, "Russian");
 
    // создание пустых списков l1, l2
    link_t * l1 = NULL, * l2 = NULL;
 
    // чтение списков
    if (!readList(&l1))
        return EXIT_FAILURE;
    if (!readList(&l2))
        return EXIT_FAILURE;
 
    // печать списков
    printf("L1: \n");
    print_list(l1);
 
    printf("L2: \n");
    print_list(l2);
 
    // проверка наличия второго списка в первом
    if (contains(l1, l2))
        printf("Первый список содержит второй\n");
    else if (contains(l2, l1))
        printf("Второй список содержит первый\n");
    else
        printf("Ни один из списков не содерит друг друга\n");
 
    // очищение списков
    delete_list(&l1);
    delete_list(&l2);
 
    _getch();
    return EXIT_SUCCESS;
   
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2014, 21:41
Привет! Вот еще темы с ответами:

Проверить, входит ли один вектор в состав другого - C++
Задача состоит в том, что надо проверить входит ли один вектор в состав другого, нужно вывести 1 или 0 (true или false). Проблема такова,...

Перенести в один другой массив четные числа.Затем перенести в еще один другой массив нечетные числа. - C++
Дан массив из 10 элементов.Перенести в один другой массив четные числа.Затем перенести в еще один другой массив нечетные числа.Помогите с...

Двусвязный список (в конец двусвязного списка добавить другой список) - C++
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

Выяснить, верно ли, что хотя бы один символ входит в массив более одного раза - C++
Даны символы s1,...,s50 . Выяснить, верно ли, что хотя бы один символ входит в s1,...,s50 более одного раза и при этом так, что между...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru