Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
1.3 kB
1
Indexable
Never
void Stack::push(int inputData){

    auto *newNode = new StackNode(); //O(1)
    newNode->next = nullptr; //O(1)
    newNode->data = inputData; //O(1)

    if(head) {

        //In the worst case, this loop goes through every node till it reaches the last node.
        //Thus, the time complexity is O(n) where n is the number of elements in the linked list.

        StackNode* current = head;
        while(current->next){
            current = current->next;
        }
        current->next = newNode;

    }else{
        head = newNode; //O(1)
    }

}

//The time complexity for the push method (based on the worst possible scenario) is O(n)


bool Stack::pop(){

    if(!head){ //O(1)
        return false;
    }

    StackNode* previous{}; //O(1)
    StackNode* deletedNode = head; //O(1)


    //In the worst-case scenario, this loop will run n times(number of nodes in the list). This makes it O(n) for time complexity.
    while(deletedNode->next){
        previous = deletedNode;
        deletedNode = deletedNode->next;
    }

    delete deletedNode; //O(1)

    //all O(1) since the below are just comparisons. 
    if(previous) {
        previous->next = nullptr;
    }else{
        head = nullptr;
    }

    return true;
}

//The time complexity for the pop method (based on the worst possible scenario) is O(n)