Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- template<typename T>
- class list
- {
- public:
- list();
- ~list();
- void add(T data);// добавление в список
- int getsize(); // размер
- void point(); //указание выделенного элемента
- int search(int i); //вызов определенного элемента списка
- private:
- template<typename T>
- class node
- {
- public:
- node* next;// следущий элемент списка
- T data;// данные
- node* null_element; // указатель на выделенный элемент
- node(T data = T(), node* next = nullptr, node* null_element = nullptr)
- {
- this->data = data;
- this->next = next;
- this->null_element = null_element;
- }
- };
- int size; //кол-во элементов в списке
- node<int> *head; //голова списка
- };
- template<typename T>
- list<T>::list()
- {
- size = 0;
- head = nullptr;
- }
- template<typename T>
- list<T>::~list()
- {
- }
- template<typename T>
- void list<T>::add(T data)
- {
- if (head == nullptr) //если первый элемент
- head = new node<T>(data);
- else {
- node<T>* c = this->head;
- while (c->next != nullptr) { //пока не конец списка
- c = c->next;
- }
- c->next = new node<T>(data);
- }
- size++;
- }
- template<typename T>
- int list<T>::getsize()
- {
- return size;
- }
- template<typename T>
- void list<T>::point()
- {
- node<int>* c = this->head;
- for (int i = 0;i < getsize() - 1;i++)
- c = c->next; //указатель на последнее число
- node<int>* temp = this->head;
- for (int i = 0; i < getsize() - 1; i++) { // заполнение поля null_element
- temp->null_element = c;
- temp = temp->next;
- }
- temp = this->head;
- //* Проверка заполнения пля <<null_element>> *//
- cout << "\nCheck fied filling <<null_element>>: \n";
- for (int i = 0; i < getsize() - 1; i++) {
- c = temp->null_element;
- cout << i << ")" << c->data << endl;
- temp = temp->next;
- }
- cout << "End of check.\n" << endl;
- }
- template<typename T>
- int list<T>::search(int i)
- {
- node<int>* c = this->head;
- int count=0;
- while (c->next != nullptr) {
- if (count == i)
- return c->data;
- c = c->next;
- count++;
- }
- if (c->next == nullptr)
- return c->data;
- }
- int main() {
- int a=1,i; // a - вводимые элементы, i - счетчик
- list<int> lst;
- while (a!=0) {
- cout << "Enter a new element: " << endl;
- cin >> a;
- if (a != 0) lst.add(a);
- }
- cout << "Number of element: N = " << lst.getsize() << endl;
- lst.point();
- cout << "Yout list: " << endl;
- for (i = 0; i < lst.getsize() - 1; i++)
- cout << lst.search(i) << " -> ";
- cout << lst.search(lst.getsize() - 1) << endl;
- cout << "Which elembent item do you want to see? " << endl;
- cin >> a;
- cout << "Elment number " << a << " = " << lst.search(a);
- return 0;
- }
Add Comment
Please, Sign In to add comment