DSA-class Assignment

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

NAME: Maqbool Ahmed

REGISTRATION NUMBER: SP21-BSE-043


CLASS: BSE-3A
SUBJECT: DSA
SUMBITTED TO: SIR AZFAR
Insert_start:
void insertFront(Node** head, int data){
    Node* new_node = new Node();
    // assign data
    new_node->data = data;
    // change the next node of this newNode
    // to current head of Linked List
    new_node->next = *head;
    // new_node should become the new head of Linked List
    *head = new_node;
    cout << "Inserted Item: " << new_node->data << endl;
}

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);
}

You might also like