#include <iostream>
#include <string>
using namespace std;
template<typename T1>
class List {
public:
List();
~List();
void push_back (T1 data);
int GetSize() {return Size;}
void clear();
void push_front(T1 data);
void insert(T1 value, int index);
void pop_front();
void removeAt(int index);
void pop_back();
void show();
T1& operator[] (const int index);
private:
template< typename T>
class Node {
private:
public:
Node *pNext;
T data;
Node(T data = T(), Node *pNext = NULL)
{
this->data = data;
this->pNext = pNext;
}
};
int Size;
Node<T1> *head;
};
template<typename T1>
List<T1>::List()
{
Size = 0;
head = NULL;
}
template<typename T1>
List<T1>::~List() {
clear();
}
template<typename T1>
void List<T1>::push_back(T1 data) {
if (head == NULL) {
head = new Node<T1>(data);
}
else {
Node<T1> *current = this->head;
while(current->pNext != NULL) {
current = current->pNext;
}
current->pNext = new Node<T1>(data);
}
Size++;
}
template<typename T1>
void List<T1>::clear() {
while (Size) {
pop_front();
}
cout << "List was cleared" << endl;
}
template<typename T1>
void List<T1>::push_front(T1 data) {
head = new Node<T1>(data, head);
Size++;
}
template<typename T1>
void List<T1>::insert(T1 data, int index) {
if ( index == 0) {
push_front(data);
}
else {
Node<T1> *previous = this->head;
for(int i = 0; i < index - 1; i++) {
previous = previous->pNext;
}
previous->pNext = new Node<T1> (data,previous->pNext);
Size++;
}
}
template<typename T1>
void List<T1>::pop_front() {
Node <T1> *temp = head;
head = head->pNext;
delete temp;
Size--;
}
template<typename T1>
void List<T1>::removeAt(int index) {
if (index == 0) {
pop_front();
}
else {
Node<T1> *previous = this->head;
for(int i = 0; i < index - 1; i++) {
previous = previous->pNext;
}
Node<T1> *toDelete = previous->pNext;
previous->pNext = toDelete->pNext;
delete toDelete;
Size--;
}
}
template<typename T1>
void List<T1>::pop_back() {
removeAt(Size - 1);
}
template<typename T1>
void List<T1>::show() {
Node <T1> *value = this->head;
while(value != NULL) {
cout << value->data << " ";
value = value->pNext;
}
}
template<typename T1>
T1 & List<T1>::operator[](const int index) {
Node<T1> *current = this->head;
int counter = 0;
while(current != NULL)
{
if(counter == index) {
return current->data;
}
current = current->pNext;
counter++;
}
}
int main() {
setlocale(LC_ALL,"ru");
List<string> lst;
List<string> lst2;
lst.push_front("Пер Мертезакер");
lst.push_back("Лоран Косельни");
lst.push_back("Генрих Мхитарян");
lst.push_back("Аарон Рэмзи");
lst.push_back("Александр Ляказетт");
lst.push_back("Джек Уилшир");
lst.push_back("Месут Озиль");
lst.push_back("Санти Касорла");
lst.push_back("Шкодран Мустафи");
lst.push_back("Калум Чеймберс");
lst.push_back("Эктор Бельерин");
lst2.push_back("1");
lst2.push_back("2");
lst2.push_back("3");
lst2.push_back("4");
lst2.push_back("5");
lst2.push_back("6");
lst2.push_back("7");
lst2.push_back("8");
lst2.push_back("9");
lst2.push_back("10");
lst2.push_back("11");
cout << "Your list length is " << lst.GetSize() << endl;
cout << "Your list include: ";
cout << endl;
lst.show();
cout << endl;
lst.clear();
cout << "Your list length is " <<lst.GetSize() << endl;
return 0;
}
Создал два списка. Вопрос как заменить элементы этих двух списков? Например не все,а только N.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Надо сложить 2 целых числа a и b, но при этом их сумма может доходить до 10^100Я написал код, он работает только до определенного момента, когда...
Имеется небольшой шаблон функции, который пиинимает в качестве аргументов две ссылки на переменные одинакового типа и меняет их значения...
Есть программа на C#, необходимо переписать код на C++В итоге мучаюсь с тем, что не могу подключиться к БД
Только начинаю изучать ООП, написал класс для матриц и перегрузил операторы ввода, вывода, +, -, =Программа работает до момента с сложением...