Есть класс List
и класс Node
. Как я не пытался описать деструкторы, методы del_first
и del_last
работают некорректно. Как конкретно мне нужно описать деструкторы для каждого из классов, для того, чтобы деструктор Node
удалял один объект Node
, а класс List
- весь список, который из объектов класса Node и состоит? Код:
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
template <class T>
class List
{
private:
template <class T>
class Node
{
public:
T data;
Node<T> *next;
Node(T dat) : data(dat), next(NULL) {}
~Node() { }
};
int size;
Node<T> *head, *tail;
public:
List(): size(0), head(NULL), tail(NULL) {}
~List()
{
while (head)
{
tail = head->next;
delete head;
head = tail;
this->size--;
}
}
void show_list()
{
Node<T> *temp = head;
while (temp != NULL)
{
cout << temp->data << " ";
temp = temp->next;
cout << endl;
}
cout << endl;
}
void add_to_head(T x)
{
Node<T> *temp = new Node<T>(x);
temp->next = head;
temp->data = x;
if (head != NULL)
{
head = temp;
}
else
{
head = tail = temp;
}
this->size++;
}
void add_to_tail(T x)
{
Node<T> *temp = new Node<T>(x);
temp->next = NULL;
temp->data = x;
if (head != NULL)
{
tail->next = temp;
tail = temp;
}
else
{
head = tail = temp;
}
this->size++;
}
void del_first()
{
if (head == NULL) return;
if (head->next)
{
Node<T> *temp = head->next;
delete head;
head = temp;
this->size--;
return;
}
else if (head == tail)
{
head->next = NULL;
delete head;
delete tail;
this->size = 0;
return;
}
}
void del_last()
{
if (head == NULL) return;
Node<T> *temp = head;
while (temp->next->next) temp = temp->next;
delete tail;
tail = temp;
return;
}
};
int main()
{
system("color f0");
List<string> mylist;
int kil = 0;
string mystring;
cout << "Enter list size" << endl;
cin >> kil;
getchar();
for (int i = 0; i < kil; i++)
{
cout << "Enter new element" << endl;
getline(cin, mystring);
mylist.add_to_tail(mystring);
}
cout << endl;
mylist.del_first();
mylist.del_last();
mylist.show_list();
system("PAUSE");
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Товарищи подскажите, как выровнять блок меню по центру который большей ширины контейнера в котором он лежит
Можно ли как-то присвоить id плейсхолдеру? Нужно чтобы он динамически изменялся, в зависимости от выбранной валютыСейчас выглядит так:
Я пытаюсь перейти на блок, по клику мыши на другом блоке
Делаю отчёт в чистом html и у меня возникли небольшие трудности