1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 80
1

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

01.11.2016, 18:28. Показов 582. Ответов 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);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2016, 18:28
Ответы с готовыми решениями:

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

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

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

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

9
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 80
01.11.2016, 19:04  [ТС] 3
Спасибо конечно, но я не такой крутой программист пока))
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2016, 19:05 4
ну... судя по поведению, далеко не "пока", раз гуглом пользоваться ну никак и по форуму порыться - то же... скажу по секрету, это 80% работы разраба.
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 80
01.11.2016, 19:18  [ТС] 5
Хех, ну как бы на форум я и сам могу зайти. Я только недавно начал изучать c++, вот хотел помощи попросить. Для меня пока что много чего непонятного))
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2016, 19:23 6
Цитата Сообщение от Треш Посмотреть сообщение
Для меня пока что много чего непонятного))
Что именно? Конкретные вопросы, что уже пробовали делать, что бы их решить?
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 80
01.11.2016, 19:32  [ТС] 7
Ну например я не понимаю как в списке реальизовать поиск элемента, в массиве это легко просто берешь циклом перебираешь. В списках вообще не шарю
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2016, 19:42 8
Цитата Сообщение от Треш Посмотреть сообщение
в массиве это легко просто берешь циклом перебираешь. В списках вообще не шарю
а чем массив отличается от списка? что такое - список?
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 80
01.11.2016, 19:51  [ТС] 9
Хах, ну так то они похожи, но вот в синтаксисе...
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
01.11.2016, 19:59 10
Цитата Сообщение от Треш Посмотреть сообщение
Хах, ну так то они похожи, но вот в синтаксисе...
Хах, а чем похожи то?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2016, 19:59
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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