Как удалить со списка последние N элементов? //#include "pch.h"
#include
#include
#include
#include
using namespace std;
template
class CList
{
public:
struct list
{
T value;
list *next;
};
struct list *head, *tail;
CList()
{
head = tail = NULL;
cout value);
temp = temp->next;
}
return *this;
}
void Addlist(const T& a);
void removeall();
bool DoubleEveryN(int);
template
friend ostream operator
void CList::removeall()
{
while (head)
{
list *p(head);
head = head->next;
delete p;
}
tail = head;
}
template
bool CList::DoubleEveryN(int a)
{
list* curr = head;
int count = 0;
while (curr)
{
count++;
curr = curr->next;
}
curr = head;
list* ptr = NULL;
list* temp = NULL;
int live = count - a + 1;
count = 0;
while (curr)
{
count++;
if (count >= live)
{
ptr->next = curr->next;
delete curr;
curr = ptr;
}
ptr = curr;
curr = curr->next;
}
return true;
}
template
void CList::Addlist(const T& a)
{
list *newlist;
newlist = new list;
newlist->value = a;
newlist->next = 0;
if (head)
{
tail->next = newlist;
tail = newlist;
}
else
tail = head = newlist;
}
template
ostream & operator &obj)
{
cout \n";
typename CList::list *list = obj.head;
while (list)
{
cout value ";
list = list->next;
}
cout \n";
}
int main()
{
setlocale(0, "RUS");
system("color f0");
CList list;
CList doublelist;
CList charlist;
CList >my_list;
int key, x, curr;
int a = 1;
int temp = 0;
do
{
menu();
key = _getch();
switch (key)
{
case '1':
for (int i = 1; i > x) || x <= 0)
{
fflush(stdin);
cin.clear();
}
list.DoubleEveryN(x);
charlist.DoubleEveryN(x);
doublelist.DoubleEveryN(x);
my_list.DoubleEveryN(x);
break;
case '4':
list.removeall();
charlist.removeall();
doublelist.removeall();
my_list.removeall();
break;
}
} while (key != 27);
return 0;
}

21 Авг 2019 в 06:58
270 +1
1
Ответы
1

Чтобы удалить из списка последние N элементов, необходимо вызвать метод DoubleEveryN с параметром N. Этот метод будет удалить из списка последние N элементов.

Пример кода для удаления последних N элементов из списка:

case '3':
cout << "Удалить из списка N последних элементов ";
while (!(cin >> x) || x <= 0)
{
fflush(stdin);
cin.clear();
}
list.DoubleEveryN(x);
charlist.DoubleEveryN(x);
doublelist.DoubleEveryN(x);
my_list.DoubleEveryN(x);
break;
20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир