Pagini recente » Cod sursa (job #2926127) | Cod sursa (job #429568) | Cod sursa (job #2729394) | Cod sursa (job #1136669) | Cod sursa (job #3252186)
//
// Created by Test on 28/10/2024.
//
#include "LinkedList.h"
void LinkedList::insertAtBeginning(const int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = first;
first = newNode;
}
void LinkedList::insertAtEnd(const int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = nullptr;
if ( !first ) { // if list is empty
first = newNode;
return;
}
Node* temp_node = first;
while (temp_node->next)
temp_node = temp_node->next;
temp_node->next = newNode;
}
void LinkedList::insertAtPosition(const int value, int position) {
if ( position < 1 ) {
cout << "Position should be >= 1." << endl;
return;
}
if ( position == 1 ) {
insertAtBeginning(value);
return;
}
Node* newNode = new Node();
newNode->data = value;
Node* temp = first;
for (int i = 1; i < position - 1 && temp; ++i)
temp = temp->next;
if ( !temp ) {
cout << "Position out of range." << endl;
delete newNode;
return;
}
newNode->next = temp->next;
temp->next = newNode;
}
void LinkedList::deleteFromBeginning() {
if ( !first ) {
cout << "List is empty." << endl;
return;
}
Node* temp_node = first;
first = first->next;
delete temp_node;
}
void LinkedList::deleteFromEnd() {
if ( !first ) {
cout << "List is empty." << endl;
return;
}
if ( !first->next ) {
delete first;
first = nullptr;
return;
}
Node* temp = first;
while ( temp->next->next )
temp = temp->next;
delete temp->next;
temp->next = nullptr;
}
void LinkedList::deleteFromPosition(int position) {
if (position < 1) {
cout << "Position should be >= 1." << endl;
return;
}
if ( position == 1 ) {
deleteFromBeginning();
return;
}
Node* temp = first;
for (int i = 1; i < position - 1 && temp; ++i)
temp = temp->next;
if (!temp || !temp->next) {
cout << "Position out of range." << endl;
return;
}
Node* nodeToDelete = temp->next;
temp->next = temp->next->next;
delete nodeToDelete;
}
void LinkedList::display() const {
if ( !first ) {
cout << "List is empty." << endl;
return;
}
const Node* temp_node = first;
while (temp_node) {
cout << temp_node->data << " -> ";
temp_node = temp_node->next;
}
cout << "NULL" << endl;
}