Professional Documents
Culture Documents
DSA-class Assignment
DSA-class Assignment
DSA-class Assignment
Insert_mid:
void insertMiddle(Node** head, int data){
Node* newNode = new Node();
newNode->data = data;
// if the LL was empty
if(*head == NULL){
newNode->data = data;
newNode->next = *head;
*head = newNode;
size++;
return;
}
Node* temp = *head;
// find correct insertion position for middle
int mid = (size % 2 == 0) ? (size/2) : (size+1)/2;
// traverse to current mid position
while(--mid){
temp = temp->next;
}
newNode->next = temp->next;
temp->next = newNode;
size++;
}
Insert_end:
void insertEnd(Node** head, int data){
Node* freshNode = new Node();
freshNode->data = data;
freshNode->next = NULL;
if(*head==NULL){
*head = freshNode;
cout << freshNode->data << " inserted" << endl;
return;
}
struct Node* temp = *head;
while(temp->next!=NULL)
temp = temp->next;
temp->next = freshNode;
cout << freshNode->data << " inserted" << endl;
}
Delete_End:
void deleteEnd(Node** head){
Node* tempNode = *head;
Node* previous;
if(*head == NULL){
cout << ("\nEmpty List, can't delete");
return; }
if(tempNode->next == NULL){
cout << "\nValue Deleted: " << (*head)->data;
*head = NULL;
return; }
while (tempNode->next != NULL) {
previous = tempNode;
tempNode = tempNode->next; }
previous->next = NULL;
cout << "\nValue Deleted: " << tempNode->data;
free(tempNode);
}
Delete_Mid:
void insert(Node** head, int data){
Node* new_node = new Node();
new_node->data = data;
new_node->next = *head;
*head = new_node;
}
void deleteNode(Node** head, int delVal){
Node* temp = *head;
Node* previous;
if(temp == NULL){
cout << "Can't delete Linked List empty" << endl;
return;
}
if(temp->next==NULL){
*head = NULL;
free(temp);
cout << "Deleted: " << delVal << endl;
return; }
if(temp->data==delVal){
*head = temp->next;
cout << "Deleted: " << temp->data << endl;
free(temp);
return;
}
while (temp != NULL && temp->data != delVal){
previous = temp;
temp = temp->next;
}
if(temp==NULL){
cout << "Value not found" << endl;
return;
}
previous->next = temp->next;
free(temp);
cout << "Deleted: " << delVal << endl;
}
Delete_Start:
void deleteStart(Node** head){
Node* tempNode = *head;
Node* previous;
if(*head == NULL){
cout << ("\nEmpty List, can't delete");
return; }
if(tempNode->next == NULL){
cout << "\nValue Deleted: " << (*head)->data;
*head = NULL;
return; }
while (tempNode->next != NULL) {
previous = tempNode;
tempNode = tempNode->next; }
previous->next = NULL;
cout << "\nValue Deleted: " << tempNode->data;
free(tempNode);
}