Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- using namespace std;
- class unit
- {
- public:
- unit(int data); //constructor
- ~unit(); //destructor
- void push(int data);
- int getData();
- unit* getNext();
- unit* findElement(int data);
- void addToTheEnd(int data);
- void deleteLast();
- private:
- unit* next;
- int data;
- };
- unit::unit(int data)
- {
- this->data = data;
- next = NULL;
- }
- unit::~unit()
- {
- delete next;
- }
- void unit::push(int data)
- {
- unit* element = new unit(this->data);
- element->next = this->next;
- this->next = element;
- this->data = data;
- }
- int unit::getData()
- {
- return data;
- }
- unit* unit::getNext()
- {
- return this->next;
- }
- unit* unit::findElement(int data)
- {
- unit* selected = this;
- while (selected->getData() != data)
- {
- selected = selected->getNext();
- }
- return selected;
- }
- void unit::addToTheEnd(int data)
- {
- unit* newData = new unit(data);
- unit* selected = this;
- while (selected->next != NULL)
- {
- selected = selected->next;
- }
- selected->next = newData;
- }
- void unit::deleteLast()
- {
- unit* selected = this;
- int temp = 0;
- while (selected->next != 0)
- {
- selected = selected->next;
- temp++;
- }
- unit* preLast = this;
- for (int i = 0; i < temp-1; i++)
- {
- preLast = preLast->next;
- }
- preLast->next = NULL;
- }
- class list
- {
- public:
- list();
- ~list();
- int getLenght();
- void print();
- void add(int data);
- void addToFront(int data);
- void insertIn(int data, int number);
- void deleteLast();
- unit* findUnit(int data);
- unit* getByNumber(int number);
- private:
- int lenght;
- unit* root;
- };
- list::list()
- {
- lenght = 0;
- root = NULL;
- }
- list::~list()
- {
- delete root;
- }
- int list::getLenght()
- {
- return lenght;
- }
- void list::print()
- {
- unit* selected = root;
- if (lenght != 0)
- {
- while (selected->getNext() != NULL)
- {
- cout << selected->getData() << endl;
- selected = selected->getNext();
- }
- cout << selected->getData() << endl;
- }
- }
- void list::add(int data)
- {
- if (lenght != 0)
- {
- root->addToTheEnd(data);
- }
- else
- {
- root = new unit(data);
- }
- lenght++;
- }
- void list::addToFront(int data)
- {
- if (lenght != 0)
- {
- root->push(data);
- }
- else
- {
- root = new unit(data);
- }
- lenght++;
- }
- void list::insertIn(int data, int number)
- {
- if (lenght < number || number < 0)
- {
- cout << "this unit doesn't exist";
- }
- else
- {
- unit* selected = root;
- int temp = 0;
- while (temp < number)
- {
- selected = selected->getNext();
- temp++;
- }
- selected->push(data);
- lenght++;
- }
- }
- void list::deleteLast()
- {
- if (lenght == 0)
- {
- cout << "list is empty";
- }
- else
- {
- root->deleteLast();
- lenght--;
- }
- }
- unit* list::findUnit(int data)
- {
- if (lenght != 0)
- {
- return root->findElement(data);
- }
- else
- {
- return NULL;
- }
- }
- unit* list::getByNumber(int number)
- {
- if ((number<0) || (number>=lenght))
- {
- return NULL;
- }
- else
- {
- unit* selected = root;
- int temp = 1;
- while (temp < number)
- {
- selected = selected->getNext();
- temp++;
- }
- return selected;
- }
- }
- int main()
- {
- list* test = new list();
- for (int i = 0; i < 15; i++)
- {
- test->add(i+1);
- }
- test->addToFront(-1);
- test->print();
- cout << "-------------------" << endl;
- cout << test->getByNumber(6)->getData() << endl;
- cout << "-------------------"<<endl;
- test->insertIn(-5, 6);
- test->print();
- cout << "-------------------"<<endl;
- cout << test->getLenght() << endl;
- cout << "-------------------"<<endl;
- test->deleteLast();
- cout << test->getLenght() << endl;
- cout << "-------------------"<<endl;
- test->print();
- cout << "-------------------"<<endl;
- cout << test->getByNumber(10)->getData() << endl;
- delete test;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement