130 / 87 / 48
Регистрация: 27.12.2019
Сообщений: 510
1

Удаление первого и последнего элемента двусвязного списка с++

05.01.2020, 02:38. Показов 2376. Ответов 1

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
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
namespace vlados
{
    template<class ITEM>
    class DoubleLinkedList
    {
    public:
        DoubleLinkedList();
 
        void AddTail(const ITEM data);
 
        void AddHead(const ITEM data);
 
        void ShowTail();
 
        void ShowHead();
 
        void DelList();
 
        int size();
 
        ~DoubleLinkedList();
    private:
        template<class ITEM>
        class node
        {
        public:
 
            node<ITEM>* pNext;
 
            node<ITEM>* pPrev;
 
            ITEM data;
 
            node(node<ITEM>* pNext = nullptr, node<ITEM>* pPrev = nullptr, ITEM data = ITEM()) : pNext(pNext), pPrev(pPrev), data(data) {};
 
        };
        node<ITEM>* head;
 
        node<ITEM>* tail;
 
 
 
        int _size;
    };
 
    template<class ITEM>
    DoubleLinkedList<ITEM>::DoubleLinkedList() : head(nullptr), tail(nullptr), _size(NULL) {}
 
    template<class ITEM>
    void DoubleLinkedList<ITEM>::AddHead(const ITEM data)
    {
        node<ITEM>* newNode = new node<ITEM>;
 
        newNode->data = data;
 
        if (newNode != nullptr)
        {
            if (head == nullptr)
            {
                head = tail = newNode;
 
                head->pNext = tail;
 
                tail->pNext = nullptr;
 
                head->pPrev = nullptr;
            }
            else
            {
                newNode->pNext = head;
 
                head->pPrev = newNode;
 
                head = newNode;
            }
        }
        ++this->_size;
    }
 
    template<class ITEM>
    void DoubleLinkedList<ITEM>::AddTail(const ITEM data)
    {
        node<ITEM>* newNode = new node<ITEM>;
 
        newNode->data = data;
 
        if (newNode != nullptr)
        {
            if (head == nullptr)
            {
                head = tail = newNode;
 
                head->pNext = tail;
 
                tail->pNext = nullptr;
 
                head->pPrev = nullptr;
            }
            else
            {
                newNode->pPrev = tail;
 
                tail->pNext = newNode;
 
                tail = newNode;
            }
        }
    }
 
    template<class ITEM>
    void DoubleLinkedList<ITEM>::ShowTail()
    {
        if (this->tail == nullptr) { return; }
 
        node<ITEM>* temp = tail;
 
        while (temp != nullptr)
        {
            cout << temp->data << " ";
 
            temp = temp->pPrev;
        }
        cout << endl;
    }
 
    template<class ITEM>
    void DoubleLinkedList<ITEM>::ShowHead()
    {
 
        if (this->head == nullptr) { return; }
 
        node<ITEM>* temp = this->head;
 
        while (temp != nullptr)
        {
            cout << temp->data << " ";
            temp = temp->pNext;
        }
        cout << endl;
    }
 
    template<class ITEM>
    void DoubleLinkedList<ITEM>::DelList()
    {
        while (head != nullptr)
        {
            node<ITEM>* temp = head->pNext;
            delete this->head;
            this->head = temp;
            --this->_size;
        }
        this->head = this->tail = nullptr;
    }
 
 
 
    template<class ITEM>
    int DoubleLinkedList<ITEM>::size() { return this->_size; }
 
    template<class ITEM>
    DoubleLinkedList<ITEM>::~DoubleLinkedList() { DelList(); }
 
}
Добавлено через 52 минуты
????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2020, 02:38
Ответы с готовыми решениями:

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

Удаление элемента из двусвязного списка
Помогите пожалуйста найти где я ошибся. Элементы в список добавляются, вывод на экран тоже...

Удаление элемента из двусвязного списка
Собственно, в коде все рабочее, кроме удаления. После ввода элемента выдает ошибку 0xC0000005....

Удаление элемента из двусвязного списка
Надо удалить элемент из двусвязного списка, если выполняется условие (2013-(current-&gt;god)&lt;3). Я...

1
130 / 87 / 48
Регистрация: 27.12.2019
Сообщений: 510
07.01.2020, 05:46  [ТС] 2
???
0
07.01.2020, 05:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2020, 05:46
Помогаю со студенческими работами здесь

Удаление элемента двусвязного списка
Вот такой вот код. Элемент 5 не удаляется, список выводится таким как и был. Почему? program...

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

Удаление первого и последнего элемента в одномерном массиве
Необходимо удалить первый и последний элемент в массиве ,но как это сделать не знаю .Пробовал так:...

Найти сумму первого и последнего элемента списка
Двунаправленный список.Найти сумму первого и последнего элемента. спасибо

Удаление последнего элемента списка
Описание однонаправленного списка: type list = ^node; node = record elem:...

Удаление последнего элемента списка
А вот когда удаляешь последний элемент списка, обязательно в предпоследнем присваивать указатель...


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

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

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