Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить попадание произвольной точки в заштрихованную область https://www.cyberforum.ru/ cpp-beginners/ thread1840010.html Ввод с клавиатуры n чисел и вычисление их среднего арифметического C++
Написать программу, которая вводит с клавиатуры n чисел и вычисляет их среднее арифметическое. Рекомендуемый вид экрана во время выполнения программы приведен ниже. Вычисление среднего...
C++ Определить k-ую цифру в последовательности, в которой выписаны подряд степени 10 https://www.cyberforum.ru/ cpp-beginners/ thread1840007.html
Пожалуйста,помогите найти ошибку:дано натуральное число k.Определите k-ую цифру в последовательности 1101001000.....,в которой выписаны подряд степени 10: #include <iostream> #include <math.h>...
C++ Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями Задание : Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нуля- ми. Найти номер первой из строк, содержащих хотя бы один положительный эле- мент. Весь форум перерыл, не... https://www.cyberforum.ru/ cpp-beginners/ thread1840000.html
Преобразование в римскую систему счисления C++
Нужно написать функцию для преобразования целого десятичного числа (от 1 до 3999) в римскую систему исчисления. ВАЖНО! Нельзя использовать массивы. В поиске шарил - нашёл только Pascal и те с...
C++ Дана прямоугольная матрица А. Переместить элементы ее периметра на один элемент по часовой стрелке Дана прямоугольная матрица А. Переместить элементы ее периметра на один элемент по часовой стрелке Написал код.Он составляет матрицу и закрывается.В чем может быть проблема? #define... https://www.cyberforum.ru/ cpp-beginners/ thread1839972.html
C++ Проверить является ли введенное слово или число палиндромом https://www.cyberforum.ru/ cpp-beginners/ thread1839971.html
Требуется написать функцию, которая проверяет введенное слово или число, на то что оно является палиндромом. ОБЯЗАТЕЛЬНО! Нельзя использовать массивы! В поиске только на Pascal выдаёт... Буду...
C++ Вывести в заданном пользователем промежутке все числа Фибоначчи
Всем доброго времени суток! Если можете, пожалуйста, помогите решить задачу. Условие: "Вывести в заданном пользователем промежутке все числа Фибоначчи".
C++ Две положительные рациональные дроби Всем привет. Задача такая: даны две положительные рациональные дроби: a/b и c/d. Требуется найти их сумму и записать ответ в виде несократимой дроби, т.е. x/y=a/b+c/d. Пример: fraction(1,... https://www.cyberforum.ru/ cpp-beginners/ thread1839966.html C++ Reinterpret_cast и указатели Добрый вечер. Есть вот такая конструкция: *reinterpret_cast<Offsets::UnitGender*>(pPlayerFields + Offsets::Unit::Gender) = Offsets::UnitGender::Female; Просто изменяется значение переменной... https://www.cyberforum.ru/ cpp-beginners/ thread1839964.html
C++ Определить является ли последовательность вещественных чисел возрастающей
Дана последовательность из вещественных чисел, которые вводятся по одному. За последним числом вводится нуль. Определить, является ли эта последовательность возрастающей. Блок схема, тест. кода не...
C++ Определить, является ли заданное натуральное число простым Определить, является ли заданное натуральное число простым. Циклический алгоритм. Блок схема, тест. Кода не надо. Добавлено через 54 минуты Ой код надо. https://www.cyberforum.ru/ cpp-beginners/ thread1839952.html
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 80
0

Реализовать класс "Двухсвязный список" - C++ - Ответ 9715650

01.11.2016, 18:28. Показов 587. Ответов 9
Метки (Все метки)

Помогите напить программу. Нужно из готового кода написать программу, которая бы создавала линейный односвязный (двухсвязный) список. Из списка нужно удалить максимальный по модулю элемент, а затем вставить число, равное первому положительному элементу, перед последним отрицательным элементом и после него. Освободить память, занимаемую элементами списка. Ввод списка должен осуществляться через клавиатуру. Заранее спасибо)
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
#include "stdafx.h"
#include <iostream>
using namespace std;
struct DoubleList //описание узла списка
{
    int data; //информационное поле
    DoubleList *next; //указатель на следующий элемент
    DoubleList *prev; //указатель на предыдущий элемент
};
DoubleList *head; //указатель на первый элемент списка
//**********************ДОБАВЛЕНИЕ ЭЛЕМЕНТА**********************
void AddList(int value, int position)
{
    DoubleList *node = new DoubleList; //создание нового элемента
    node->data = value; //присвоение элементу значения
    if (head == NULL) //если список пуст
    {
        node->next = node; //установка указателя next
        node->prev = node; //установка указателя prev
        head = node; //определяется голова списка
    }
    else
    {
        DoubleList *p = head;
        for (int i = position; i>1; i--) p = p->next;
        p->prev->next = node;
        node->prev = p->prev;
        node->next = p; //добавление элемента
        p->prev = node;
    }
    cout << "\nЭлемент добавлен...\n\n";
}
//***********************УДАЛЕНИЕ ЭЛЕМЕНТА***********************
int DeleteList(int position)
{
    if (head == NULL) { cout << "\nСписок пуст\n\n"; return 0; }
    if (head == head->next) //если это последний элемент в списке
    {
        delete head; //удаление элемента
        head = NULL;
    }
    else
    {
        DoubleList *a = head;
        for (int i = position; i>1; i--) a = a->next;
        if (a == head) head = a->next;
        a->prev->next = a->next; //удаление элемента
        a->next->prev = a->prev;
        delete a;
    }
    cout << "\nЭлемент удален...\n\n";
}
//*************************ВЫВОД СПИСКА*************************
void PrintList()
{
    if (head == NULL) cout << "Список пуст\n";
    else
    {
        DoubleList *a = head;
        cout << "\nЭлементы списка: ";
        do
        {
            cout << a->data << " ";
            a = a->next;
        } while (a != head); cout << "\n\n";
    }
}
//************************ГЛАВНАЯ ФУНКЦИЯ************************
void main()
{
    setlocale(LC_ALL, "Rus");
    int value, position, x;
    do
    {
        cout << "1. Добавить элемент" << endl;
        cout << "2. Удалить элемент" << endl;
        cout << "3. Вывести список" << endl;
        cout << "0. Выйти" << endl;
        cin >> x;
        switch (x)
        {
        case 1:
            cout << "Значение > "; cin >> value;
            cout << "Позиция > "; cin >> position;
            AddList(value, position); break;
        case 2:
            cout << "Позиция > "; cin >> position;
            DeleteList(position); break;
        case 3: PrintList(); break;
        }
    } while (x != 0);
}


Вернуться к обсуждению:
Реализовать класс "Двухсвязный список" C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2016, 18:28
Готовые ответы и решения:

Реализовать класс "двухсвязный список"
Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может...

Класс "Студент", реализовать динамический список "Группа студентов"
реализовать динамический список &quot; группа студентов&quot;. Узел: -группа -фамилия Функции списка:...

Реализовать пользовательский класс "Двунаправленный список"; реализовать добавление и удаление элементов
Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать...

Реализовать класс "Список"; реализовать добавление и удаление элементов
помогите написать код по спискам. надо создать линейный односвязный (двухсвязный) список. Из...

9
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2016, 18:28
Помогаю со студенческими работами здесь

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число"
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию...

Реализовать пользовательский класс "Связанный список" (не понимаю код)
Всем привет , может кто рассказать конкретно что происходит в тех строках где стоят комментарии....

Реализовать абстрактный класс "Список" стеком/очередью
Доброго времени суток, форумчане! Нужно реализовать абстрактный класс &quot; Список &quot; и выполнить две...

Реализовать шаблонный класс "Несортированный однонаправленный список"
Здравствуйте! Не могу реализовать работу по шаблонам : Несортированный однонаправленный список:...

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