замена элементов двух списков

247
10 марта 2018, 19:51
    #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.

READ ALSO
C++ Сложение огромных чисел

C++ Сложение огромных чисел

Надо сложить 2 целых числа a и b, но при этом их сумма может доходить до 10^100Я написал код, он работает только до определенного момента, когда...

226
Разница между rvalue и lvalue

Разница между rvalue и lvalue

Имеется небольшой шаблон функции, который пиинимает в качестве аргументов две ссылки на переменные одинакового типа и меняет их значения...

278
Как присоединиться к SqlServer программно

Как присоединиться к SqlServer программно

Есть программа на C#, необходимо переписать код на C++В итоге мучаюсь с тем, что не могу подключиться к БД

205
Класс Матрица С++

Класс Матрица С++

Только начинаю изучать ООП, написал класс для матриц и перегрузил операторы ввода, вывода, +, -, =Программа работает до момента с сложением...

219