#include <iostream>
#include <vector>
#include <sstream>
template <class T> class list{
private:
list *next;
T value;
public:
list () {
next = NULL;
}
list* getNext (){
return next;
}
void setValue(T val){ this->value = val;}
T getValue(){
return value;
}
void addNewElement(T ob){
this->next = new list();
this->next->setValue(ob);
}
void showValue (){
std::cout << value << " ";
}
int setSize(){
}
void show(){
list *p = this;
if ( p == NULL)
std::cout << "Список пуст!" << std::endl;
while (p != NULL){
p -> showValue();
p = p -> getNext();
}
}
};
int main(){
list <int> list1;
list <int> *p1;
list <char> list2;
list <char> *p2;
list <float> list3;
list <float> *p3;
list <double> list4;
list <double> *p4;
list <std::string> list5;
list <std::string> *p5;
setlocale(LC_ALL, "Russian");
list1.setValue(3);
list1.addNewElement(2);
p1 = list1.getNext();
p1 -> addNewElement(4);
p1 = p1 -> getNext();
// -------
list2.setValue('a');
list2.addNewElement('d');
p2 = list2.getNext();
p2 -> addNewElement('v');
p2 = p2 -> getNext();
// -------
list3.setValue(-3.1);
list3.addNewElement(2.4);
p3 = list3.getNext();
p3 -> addNewElement(4.2);
p3 = p3 -> getNext();
// --------
list4.setValue(3.4141241);
list4.addNewElement(2.231241);
p4 = list4.getNext();
p4 -> addNewElement(4.3333);
p4 = p4 -> getNext();
// --------
list5.setValue("проблема");
list5.addNewElement("нет");
p5 = list5.getNext();
p5 -> addNewElement("проблемы");
p5 = p5 -> getNext();
std::cout << "Список элементов типа int:" << std::endl;
list1.show();
std::cout << std::endl;
std::cout << "Список элементов типа char:" << std::endl;
list2.show();
std::cout << std::endl;
std::cout << "Список элементов типа float:" << std::endl;
list3.show();
std::cout << std::endl;
std::cout << "Список элементов типа double:" << std::endl;
list4.show();
std::cout << std::endl;
std::cout << "Список элементов типа string:" << std::endl;
list5.show();
std::cout << std::endl;
}