-12 / 0 / 0
Регистрация: 08.10.2016
Сообщений: 39
1

Определить есть ли в списке одинаковые элементы

21.10.2017, 15:33. Показов 2876. Ответов 2

Нужно определить есть ли в списке одинаковые элементы, для этого использую функцию Run, в ней я корень записываю в current, а второй элемент списка в temp, но при проверке равенства элемента бывает так, что при сравнении 2 одинаковых элементов условие в if пропускается и выдает сообщение об отсутствии одинаковых элементов... Кто знает помогите пожалуйста, может я что-то с ссылками напутал? Или есть какой-нибудь другой способ?
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
struct list {
    int Data;
    list *Prev;
    list *Next;
};
 
list *CreateList(int n);
void PrintList(list *root);
void Run(list *root);
 
int main()
{
    int amountElements;
    list *root = new list;
 
    cout << "Enter amount of elements: " << endl;
    cin >> amountElements;
 
    if (amountElements != 0) {
        root = CreateList(amountElements);
 
        cout << "That's your list:" << endl;
        PrintList(root);
 
        cout << endl;
    }
    else {
        cout << "Error: amount = 0" << endl;
    }
 
    Run(root);
 
    getchar();
    getchar();
 
    return 0;
}
 
list *CreateList(int n)
{
    srand(time(NULL));
    list *root = new list;
    root->Prev = NULL;
    root->Next = NULL;
    root->Data = rand() % 15;
 
    list *current = root;
    for (int i = 0; i < n - 1; i++) {
        list *temp = new list;
        current->Next = temp;
        temp->Data = rand() % 15;
        temp->Next = NULL;
        temp->Prev = current;
        current = current->Next;
    }
    return root;
}
 
void PrintList(list *root)
{
    list *current = root;
 
    cout << endl;
 
    while (current)
    {
        cout << current->Data << " ";
        current = current->Next;
    }
}
void Run(list *root) {
    list *current = new list;
 
    current->Data = root->Data;
    current->Next = root->Next;
    current->Prev = root->Prev;
 
    list *temp = new list;
    temp->Data = root->Next->Data;
    temp->Next = root->Next->Next;
    temp->Prev = root->Next->Prev;
 
    bool Same = false;
 
    while (current->Next->Next != nullptr) {
        while (temp->Next != nullptr) {
            if (current->Data == temp->Data) {
                Same = true;
            }
            temp = temp->Next;
        }
        current = current->Next;
    }
 
    if (Same == true)
        cout << "Yes, there are duplicate tree elements" << endl;
    else
        cout << "No, there are no duplicate tree elements" << endl;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2017, 15:33
Ответы с готовыми решениями:

Определить, есть ли в массиве одинаковые соседние элементы
Заполнить массив из 10 элементов случайными числами в интервале от 0 до 4 и определить, есть ли в...

Определить, есть ли в массиве одинаковые элементы, стоящие рядом
Заполните массив случайными числами в интервале .Определить , есть ли в нем элементы с одинаковыми...

Определить, есть ли в массиве одинаковые элементы не стоящие рядом
Заполнить массив случайными числами определить есть ли одинаковые элементы не стоящие рядом

Дана матрица. Определить есть ли одинаковые элементы в матрице
Дана матрица. Определить есть ли одинаковые элементы в матрице. Использовать Function.

2
1269 / 1026 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
21.10.2017, 16:46 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void CheckDuplicates(list *l)
{
    for (list *p = l; p; p = p->Next)
        for (list *q = p->Next; q; q = q->Next)
        {
            if (p->Data == q->Data) {
                cout << "First duplicate value: " << p->Data << "\n";
                return;
            }
        }
 
    cout << "No duplicates.\n";
}
1
-12 / 0 / 0
Регистрация: 08.10.2016
Сообщений: 39
21.10.2017, 16:50  [ТС] 3
Спасибо большое!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2017, 16:50
Помогаю со студенческими работами здесь

Определить есть ли в массиве одинаковые рядом расположенные элементы
Написать программу, которая определяет есть ли в данном массиве одинаковые рядом расположенные...

Определить или в двумернам массиве есть одинаковые элементы.
Помогите пожалуйсто :boredom: C++: Определить или в двумернам массиве есть одинаковые элементы.

Выяснить, есть ли одинаковые элементы в массиве. Определить их значение и индексы
Выяснить, есть ли одинаковые элементы в массиве. Определить их значение и индексы.

Определить, есть ли в матрице столбец, в котором имеются одинаковые элементы
дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru