Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- template <typename T> class List
- {
- private:
- // запрет на копирование и присваивание
- List(const List&) = delete;
- void operator=(const List&) = delete;
- struct spisok
- {
- T d;
- spisok* next;
- };
- spisok* head;
- public: //конструктор по умолчанию
- List() {
- head = NULL;
- }
- //конструктор с параметром Т 1
- List(T x) {
- head = new spisok;
- head->d = x;
- head->next = NULL;
- }
- //вставить элемент в начало
- void vNACH(T x) {
- spisok* z;
- z = new spisok;
- if (head == NULL) {
- z->d = x;
- z->next = NULL;
- head = z;
- }
- else {
- z->d = x;
- z->next = head;
- head = z;
- }
- }
- //вставить элемент в конец
- void vKON(T x) {
- spisok* z = head, * p;
- p = new spisok;
- if (head == NULL) {
- p->d = x;
- p->next = NULL;
- head = p;
- }
- else
- {
- while (z->next != NULL) {
- z = z->next;
- }
- p = new spisok;
- p->next = NULL;
- p->d = x;
- z->next = p;
- }
- }
- //удалить из конца
- void delkon() {
- spisok* z = head, * p;
- if (z->next == NULL)
- del1();
- else {
- while (z->next->next != NULL) {
- z = z->next;
- }
- p = z->next;
- z->next = NULL;
- delete(p);
- }
- }
- // удалить элемент из начала
- void del1() {
- spisok* z;
- z = head;
- if (z == NULL) {
- cout << "itak pust" << endl;
- }
- else {
- head = head->next;
- delete z;
- }
- }
- // деструктор
- ~List() {
- cout << "destructor" << endl;
- while (head != NULL) {
- del1();
- }
- }
- //приведение к типу Т
- operator T() const {
- return (T)head->d;
- }
- //вывод списка
- void vivod() {
- spisok* z = head;
- if (head == NULL) cout << "null" << endl;
- else {
- while (z != NULL) {
- cout << z->d << " ";
- z = z->next;
- }
- }
- cout << endl;
- }
- };
- int main() {
- int a = 1, b = 4;
- List<int> z;
- z.vivod();
- z.del1();
- z.vNACH(3);
- z.vKON(9);
- z.vivod();
- List<int> c(a);
- c.vivod();
- c.vNACH(5);
- c.vivod();
- c.del1();
- c.vivod();
- c.vNACH(7);
- c.vKON(9);
- c.vivod();
- c.delkon();
- c.vivod();
- //List<int> x = z;
- //x = z;
- system("pause");
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement