Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: AntonCh (01.12.2017 в 18:25) Реализовать групповое добавление, удаление и замена элементов. Группа представляется диапазоном итераторов. Реализовать методы поиска элементов и групп элементов. Написал простое добавление элемента, как прикрутить сюда итераторы?
#include "stdafx.h" using namespace std; #include <iostream> #include <conio.h> #include <ctype.h> #include <windows.h> template<typename T> struct Link { T data; Link* next; }; template<typename T> class List { Link<T>* first; public: List() :first(nullptr) {}; List(const List<T>& Source); ~List() { Link<T> *current = first; while (current != nullptr) { Link<T>* temp = current; current = current->next; delete temp; } } void Add(T Data); void Show(); template <typename T> friend void ShowA(List<T>& list); template <typename T> friend void AddA(List<T>& list, T Data); }; template<typename T> List<T>::List(const List<T>& Source) { Link<T> *temp = Source->first; Link<T> *A,*B = NULL; while (temp != NULL) { A = new Link<T>; A->data = temp->data; if (B != NULL) B->next = &A; else first = &A; B = &A; temp = temp->next; } } template<typename T> void List<T>::Add(T Data) { Link<T> *temp = first; Link<T> *NewNode = new Link<T>; if(temp != NULL) while (temp->next != NULL) temp = temp->next; NewNode->data = Data; NewNode->next = NULL; if (temp != NULL) temp->next = NewNode; else first = NewNode; } template<typename T> void List<T>::Show() { Link<T> *temp = first; while (temp != NULL) { cout << (T)temp->data << endl; temp = temp->next; } } template <typename T> void ShowA(List<T>& list) { list.Show(); } template <typename T> void AddA(List<T>& list, T Data) { list.Add(Data); } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); List<int> Test; AddA(Test, 3); AddA(Test, 4); cout << "данные"<<endl; ShowA(Test); _getch(); return 0; }
Ваше имя:
Пароль:
Цитировать Используйте тэги для выделения текста: Код: [code][/code] Жирный: [b][/b] Наклонный: [i][/i] URL: [url][/url]
Сообщение:
Прикрепить: