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

ошибка в удалении элемента в односвязном списке

29.04.2020, 10:22. Показов 389. Ответов 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
void delnode(node **pbeg) //удаление часто встречающхся чисел из произвольных мест
{
     node *temp, *prev;
    temp= *pbeg;// устанавливаем указатель temp на начало очереди
    prev=*pbeg; // указатель предыдущего узла для текущего
    while (temp!=NULL)
    {
        temp->count = 0;
        prev = *pbeg;
        while (prev!= NULL)
            {
                if (prev->info == temp->info)
                temp->count++;
                prev = prev->next;
            }
            temp = temp->next;
    }
    print(*pbeg); // распечатка очереди после подсчета
    // вычисление самого частого
    temp = *pbeg;
    int max = 0;
    int maxValue;
    while (temp != NULL)
    {
        if (max < temp->count)
            {
                maxValue = temp->info;
                max = temp->count;
            }
        temp = temp->next;
    }
    if (max>=2)
    {
        cout<<endl;
        cout << maxValue << ", встречается " << max << " раз" << endl;
    }
    else
        cout<<"повторяющихся элементов нет "<<endl;
//удаление начинается вот здесь
    while (temp!=NULL)
    {
        if(max>=2)
        {
            if  (temp==(*pbeg)) // если это начало очереди
              {
                   (*pbeg)=temp->next;
                    delete temp;
                    temp=*pbeg;
              }
               else  // если найденный узел не является началом
               {
                    prev->next=temp->next;
                    delete temp;
                    temp=prev->next;
               }
        }
              
         }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2020, 10:22
Ответы с готовыми решениями:

Ошибка с удалением элемента в односвязном списке
Здравствуйте! Вроде написал функцию удаления элемента в указанной позиции, но почему то не...

Ошибка в удалении элемента в списке
Собственно не получается последняя функция &quot;delete_e&quot;, задача удалить в списке след. элемент по...

Поиск нужного элемента в односвязном списке
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; struct Node { int data; Node*...

Удаление и поиск элемента в односвязном списке
Вот мои функции, но они почему то не работают: функция удаления удаляет всегда голову, а функция...

5
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
29.04.2020, 11:18 2
Цитата Сообщение от Milsdar Посмотреть сообщение
/удаление начинается вот здесь
Что ты здесь пытаешься сделать удалить все элементы, начиная с заданного до конца списка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void erase_next(node **head, node *pos)
{
    if (!pos)
    {
        pos = *head;
        *head = (*head)->next;
        delete pos;
    }
    else
    {
        auto *p = pos->next;
        pos->next = p->next;
        delete p;
    }
}
0
0 / 0 / 0
Регистрация: 18.03.2020
Сообщений: 13
29.04.2020, 11:42  [ТС] 3
мне нужно удалить самый частовстречающийся элемент из списка
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
29.04.2020, 11:45 4
Цитата Сообщение от Milsdar Посмотреть сообщение
мне нужно удалить самый частовстречающийся элемент из списка
Сначала тебе надо найти этот элемент, вернее предыдущий ему, только потом удалить. Не надо смешивать всё в кучу. Решай задачи по-очереди.
0
0 / 0 / 0
Регистрация: 18.03.2020
Сообщений: 13
29.04.2020, 11:50  [ТС] 5
я сначала нахожу элементы, который часто встречается.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void delnode(node **pbeg) //удаление часто встречающхся чисел из произвольных мест
{
     node *temp, *prev;
    temp= *pbeg;// устанавливаем указатель temp на начало очереди
    prev=*pbeg; // указатель предыдущего узла для текущего
    while (temp!=NULL)
    {
        temp->count = 0;
        prev = *pbeg;
        while (prev!= NULL)
            {
                if (prev->info == temp->info)
                temp->count++;
                prev = prev->next;
            }
            temp = temp->next;
    }
    print(*pbeg); // распечатка очереди после подсчета
после этого у меня идет код отыскания самого частого из всех частовстречающихся элементов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  // вычисление самого частого
    temp = *pbeg;
    int max = 0;
    int maxValue;
    while (temp != NULL)
    {
        if (max < temp->count)
            {
                maxValue = temp->info;
                max = temp->count;
            }
        temp = temp->next;
    }
    if (max>=2)
    {
        cout<<endl;
        cout << maxValue << ", встречается " << max << " раз" << endl;
         
    }
    else
        cout<<"повторяющихся элементов нет "<<endl;
после того как я нашла этот элемент мне нужно его удалить из списка, я не могу понять как это сделать..
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
29.04.2020, 11:54 6
Цитата Сообщение от Milsdar Посмотреть сообщение
после того как я нашла этот элемент мне нужно его удалить из списка, я не могу понять как это сделать..
Я ж тебе показал функцию, которая удаляет следующий элемент. В односвязном списке только так.
1
29.04.2020, 11:54
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2020, 11:54
Помогаю со студенческими работами здесь

Удаление всех вхождений элемента Х в односвязном списке L
Доброй ночи. Ситуация HELP, ситуация SOS. Есть задача &quot;Написать программу удаление всех...

Реализовать функцию поиска элемента Е в односвязном списке L
Нужно написать такую вот прогу &quot;Реализуй функцию поиска элемента Е в односвязном списке L&quot; Заранее...

Поиск предыдущего элемента в односвязном линейном списке
Функция поиска предыдущего элемента для элемента со значением x в односвязном линейном списке...

Удалить все вхождения элемента в односвязном списке
Нужна функция для удаления всех вхождений элемента в односвязном списке

Поиск максимального элемента в односвязном циклическом списке
Нужно найти max элемент этого динамического списка... помогите пожалуйста // list.cpp: определяет...

Реализовать функцию поиска элемента в односвязном списке
function SearchInList (BegList: PElement; i: integer; var q: PElement): PElement; begin ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru