Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <iostream>
- #ifndef __list
- #define __list
- template <class T> class MyList
- {
- struct Element
- {
- T data; // данные элемента
- Element *next; // указатель на следующий элемент списка
- Element *prev; // указатель на предыдущий элемент списка
- };
- private:
- Element *Head; // указатель первый добавленный элемент
- Element *Curr; // указатель на текущий элемент
- public:
- int length;
- MyList();
- ~MyList();
- int isNoEmpty();
- void push(T data);
- void loop();
- };
- template <class T>
- MyList<T>::MyList() {
- this->Head = NULL;
- this->Curr = NULL;
- this->length = 0;
- };
- template <class T> MyList<T>::~MyList() {
- };
- template <class T> int MyList<T>::isNoEmpty()
- {
- if (Curr==NULL ) // если текущая позиция имеет нулевое значение
- return 0; // вернуть "ложь"
- else // иначе
- return 1; // вернуть "истина"
- }
- template <class T> void MyList<T>::push (T data)
- {
- Element *inserted; // создать новый указатель на элемент
- inserted= new Element; // выделить память под элемент
- inserted->data=data; // установить входной параметр в поле данных элемента
- if (!isNoEmpty()) // если список пуст
- {
- Head=inserted; // установить указатель первого элемента на новый элемент
- Curr=inserted; // установить указатель текущего элемента на новый элемент
- Curr->next=inserted; // установить указатель следующего элемента на новый элемент
- Curr->prev=inserted; // установить указатель предыдущего элемента на новый элемент
- }
- else // если список не пуст
- {
- inserted->next=Curr->next; // перенаправляем указатель следующего элемента в добавляемом
- inserted->next->prev=inserted; // перенаправляем указатель следующего элемента на добавляемый
- Curr->next=inserted; // перенаправляем следующий указатель на добавляемый
- inserted->prev=Curr; // перенаправляем предыдущий добавляемого на текущий
- }
- length++; // увеличиваем количество элементов в списке
- Curr=inserted; // устанавливаем текущий указатель на добавленный
- }
- template <class T> void MyList<T>::loop()
- {
- if (isNoEmpty())
- {
- Element *tempCar=Head;
- for (int i=0;i<length;i++)
- {
- std::cout << tempCar->data <<" ";
- tempCar=tempCar->next ;
- }
- std::cout << "\n";
- }
- else // если список пуст
- std::cout<< "List is empty\n";
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement