SinglyLinkedList isEmpty
bool isEmpty() const
{
return head == nullptr;
}SinglyLinkedList AddNodeFront
void addNodeFront(T value)
{
node *temp = new node;
temp->data = value
if (isEmpty())
{
head = tail = temp;
}
else
{
temp->next = head;
head = temp;
}
}SinglyLinkedList AddNodeBack
void addNodeBack(T value)
{
node *temp = new node;
temp->data = value;
temp->next = nullptr;
if (isEmpty())
{
head = tail = temp;
}
else
{
tail->next = temp;
tail = temp;
}
}SinglyLinkedList AddNodeAtPosition
void addNodeAtPosition(T value, int position)
{
if (position <= 0)
{
addNodeFront(value);
return;
}
Node<T>* newNode = new Node<T>(value);
Node<T>* current = head;
int index = 0;
while (current != nullptr && index < position - 1)
{
current = current->next;
index++;
}
if (current == nullptr)
{
addNodeBack(value);
}
else
{
newNode->next = current->next;
current->next = newNode;
if (newNode->next == nullptr)
tail = newNode;
}
}SinglyLinkedList DeleteNodeFront
void deleteNodeFront()
{
if (isEmpty())
{
cout << "List is empty." << endl;
return;
}
node *temp = head;
head = head->next;
delete temp;
if (head == nullptr)
tail = nullptr;
}SinglyLinkedList DeleteNodeBack
void deleteNodeBack()
{
if (isEmpty())
{
cout << "Sarasas yra tuscias. Negalima pasalinti elemento." << endl;
return;
}
if (head == tail)
{
delete head;
head = tail = nullptr;
}
else
{
node *current = head;
while (current->next != tail)
{
current = current->next;
}
delete tail;
tail = current;
tail->next = nullptr;
}
}SinglyLinkedList DeleteNodeAtPosition
void deleteNodeAtPosition(int position)
{
if (position <= 0)
{
deleteNodeFront();
return;
}
Node<T>* current = head;
Node<T>* previous = nullptr;
int index = 0;
while (current != nullptr && index < position)
{
previous = current;
current = current->next;
index++;
}
if (current == nullptr)
{
cout << "Position is out of range" << endl;
return;
}
previous->next = current->next;
if (current == tail)
tail = previous;
delete current;
}SinglyLinkedList search
void search(T value)
{
Node<T>* current = head;
int index = 0;
bool found = false;
while (current != nullptr)
{
if (current->data == value)
{
cout << "Reiksme " << value << " rasta pozicijoje: " << index << endl;
found = true;
}
current = current->next;
index++;
}
if (!found)
cout << "Reiksme " << value << " nerasta sarase." << endl;
}SinglyLinkedList display
void display() const
{
if (isEmpty())
{
cout << "Sarasas yra tuscias." << endl;
return;
}
node *current = head;
while (current != nullptr)
{
cout << current->data << " ";
current = current->next;
}
cout << endl;
}SinglyLinkedList reverse
void reverse()
{
if (isEmpty() || head == tail)
return;
Node<T>* prev = nullptr;
Node<T>* current = head;
Node<T>* next = nullptr;
tail = head;
while (current != nullptr)
{
next = current->next;
current->next = prev;
prev = current;
current = next;
}
head = prev;
}SinglyLinkedList clear
void clear()
{
while (!isEmpty())
{
deleteNodeFront();
}
}