0 / 0 / 0
Регистрация: 07.04.2020
Сообщений: 4

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

07.04.2020, 18:36. Показов 2977. Ответов 2

Студворк — интернет-сервис помощи студентам
Условие задачи в заголовке темы. Пытался написать, но выводит в обратном порядке, ничего не удаляет, да еще и "Н" добавляет. Подскажите, что не так хотя бы в удалении повторяющегося элемента. Как добавлять в конец списка тоже не совсем уяснил
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
#include <conio.h>
#include <locale>
#include <stdio.h>
 
typedef struct node
{
    char data;
    struct node* next;
} node;
 
node* add(node* first, int number);
node* deleten(node* first, node* root);
void print(node* first);
 
node* first = new node;
 
 
void main()
{
    setlocale(LC_ALL, "ru");
    char sym; //символ, вводимый с клавиатуры
    printf("Bведите строку символов и точку:\n");
    first->next = NULL;//инициализация списка
 
    do                     /*  заполнение стека    */
    {
        sym = _getche();
        add(first, sym);
    } while (sym != '.');
    if (first->data == first->next->data) deleten(first, first->next);
    printf("\n");
    print(first);
    _getch();
}
 
/*----добавление узла----*/
 
node* add(node* first, int number)
{
    node* temp, * p;
    temp = new node;
    p = first->next;
    first->next = temp;
    temp->data = number;
    temp->next = p;
    return(temp);
}
 
/*----удаление узла----*/
 
node* deleten(node* first, node* root)
{
    node* temp;
    temp = root;
    while (temp->next != first)
    {
        temp = temp->next;
    }
    temp->next = first->next;
    delete first;
    return(temp);
}
 
/*----вывод элементов списка----*/
 
void print(node* first)
{
    node* p;
    p = first;
    do {
        printf("%c", p->data);
        p = p->next;
    } while (p != NULL);
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.04.2020, 18:36
Ответы с готовыми решениями:

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

В списке из подряд идущих одинаковых элементов оставить первый
Дан список из n целых чисел а1, а2, ... , аn. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый....

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

2
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
08.04.2020, 16:31
Лучший ответ Сообщение было отмечено AlexSemenov как решение

Решение

AlexSemenov, здравствуйте! Вот решение:

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 <iostream>
#include <cmath>
 
    using namespace std;
 
struct List {
    double key;
    List* next;
};
 
List* head = NULL;
 
void add(double key) {
    List* temp = new List;
    temp->key = key;
    temp->next = NULL;
    if (head == NULL) {
        head = temp;
    } else {
        List* ptr = head;
        while (ptr->next != NULL) {
            ptr = ptr->next;
        }
        ptr->next = temp;
    }
}
 
void del_repeats(List* head) {
    List* curr = head;
    List* tmp;
    while (1) {
        if (curr->next == NULL) {
            break;
        }
        if (fabs(curr->next->key - curr->key) < 0.0001) {
            tmp = curr->next->next;
            delete curr->next;
            curr->next = tmp;
        } else {
            curr = curr->next;
        }
    }
}
 
void print(List* head) {
    List* curr = head;
    while (curr != NULL) {
        cout << curr->key << " ";
        curr = curr->next;
    }
}
 
int main() {
    int n;
    double val;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> val;
        add(val);
    }
    del_repeats(head);
    print(head);
    return 0;
}
P.S. Обратите, пожалуйста, внимание. Я сравниваю вещественные числа с заданной точностью. То есть, например, числа 1.123 и 1.124 не будут равны, а числа 1.12335 1.12337 будут.
1
0 / 0 / 0
Регистрация: 07.04.2020
Сообщений: 4
10.04.2020, 15:21  [ТС]
Спасибо большое, выручили!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2020, 15:21
Помогаю со студенческими работами здесь

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

В списке L из каждой группы идущих подряд равных элементов оставить только один
опишите программу которая в списке L из каждой группы идущих подряд равных элементов оставляет только один

В списке L из каждой группы подряд идущих равных элементов оставить только один элемент
В списке L из каждой группы подряд идущих равных элементов оставить только один элемент Например, 2 2 1 1 3 3, после введения в программу...

Из каждой группы подряд идущих одинаковых слов в списке оставить только одно
Составить программу, которая формирует список с двумя связями, добавляет в него не менее 20 слов на русском языке. Из каждой группы подряд...

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


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

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

Новые блоги и статьи
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru