Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //LinkedList.cpp
- #include <iostream>
- #include "LinkedListElement.h"
- class LinkedList
- {
- private:
- LinkedListElement* Head;
- LinkedListElement* Tail;
- int Length;
- public:
- LinkedList()
- {
- Head = nullptr;
- Tail = nullptr;
- Length = 0;
- }
- LinkedList(int value)
- {
- LinkedListElement* newElement = new LinkedListElement(value, nullptr);
- Head = newElement;
- Tail = newElement;
- Length = 1;
- }
- LinkedList(const LinkedList& other)
- {
- LinkedListElement* currentElement = Head;
- LinkedListElement* currentOtherElement = other.Head;
- for (int i = 0; i < other.Length; i++)
- {
- currentElement->SetNextElement(currentOtherElement->GetNextElement());
- currentElement->SetValue(currentOtherElement->GetValue());
- }
- }
- ~LinkedList()
- {
- while (Head != nullptr)
- {
- LinkedListElement* nextElement = Head->GetNextElement();
- delete Head;
- Head = nextElement;
- }
- }
- bool IsIndexCorrect(int index)
- {
- return index >= 0 && index < Length;
- }
- void AddToTail(int value)
- {
- if (Head == nullptr)
- {
- LinkedListElement* newElement = new LinkedListElement(value, nullptr);
- Head = newElement;
- Tail = Head;
- }
- else
- {
- LinkedListElement* newElement = new LinkedListElement(value, nullptr);
- Tail->SetNextElement(newElement);
- Tail = newElement;
- }
- Length++;
- }
- void AddByIndex(int index, int value)
- {
- if (IsIndexCorrect(index) || (index == 0 && Length == 0))
- {
- if (Head == nullptr)
- AddToTail(value);
- else
- {
- if (index < Length)
- {
- LinkedListElement* current = Head;
- LinkedListElement* newElement = new LinkedListElement(value, nullptr);
- LinkedListElement* elementNeededToMove = new LinkedListElement();
- if (index == 0)
- {
- elementNeededToMove = Head->GetNextElement();
- Head = newElement;
- }
- else
- {
- for (int i = 0; i < index - 1; i++)
- current = current->GetNextElement();
- elementNeededToMove = current->GetNextElement();
- current->SetNextElement(newElement);
- }
- newElement->SetNextElement(elementNeededToMove);
- delete elementNeededToMove;
- }
- }
- Length++;
- }
- }
- void DeleteByIndex(int index)
- {
- if (IsIndexCorrect(index))
- {
- LinkedListElement* current = Head;
- LinkedListElement* itemToDelete = nullptr;
- if (index == 0)
- {
- itemToDelete = current;
- Head = current->GetNextElement();
- }
- else
- {
- for (int i = 0; i < index - 1; i++)
- current = current->GetNextElement();
- if (index == Length - 1)
- {
- itemToDelete = Tail;
- Tail = current;
- }
- else
- {
- itemToDelete = current->GetNextElement();
- current->SetNextElement(itemToDelete->GetNextElement());
- }
- }
- delete itemToDelete;
- Length--;
- }
- }
- bool Contains(int value)
- {
- bool isListContainValue = false;
- LinkedListElement* current = Head;
- while (current != nullptr)
- {
- if (current->GetValue() == value)
- {
- isListContainValue = true;
- break;
- }
- current = current->GetNextElement();
- }
- return isListContainValue;
- }
- };
- int main() {}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement