w3resource

C++ Stack Exercises: Check if the stack (using an array) is full

C++ Stack: Exercise-2 with Solution

Write a C++ program to implement a stack using an array with push and pop operations. Check if the stack is full.

Test Data:
MAX_SIZE of the array: 5
Insert some elements onto the stack:
Stack elements: 1 2 5 6 9
Is the stack full? 1

Sample Solution:

C++ Code:

 #include <iostream>

using namespace std;

#define MAX_SIZE 5 // Maximum size of stack

class Stack {
private:
    int top; // Index of top element
    int arr[MAX_SIZE]; // Array to store elements

public:
    Stack() {
        top = -1; // Initialize top index to -1 (empty stack)
    }

    bool push(int x) {
        if (isFull()) {
            cout << "Stack overflow" << endl; // Display message if stack is full
            return false; // Return false to indicate failure in pushing element
        }
        arr[++top] = x; // Increment top index and add element to array
        return true; // Return true to indicate successful element addition
    }

    int pop() {
        if (isEmpty()) {
            cout << "Stack underflow" << endl; // Display message if stack is empty
            return 0; // Return 0 to indicate failure in popping element
        }
        return arr[top--]; // Return top element and decrement top index
    }

    int peek() {
        if (isEmpty()) {
            cout << "Stack is empty" << endl; // Display message if stack is empty
            return 0; // Return 0 to indicate failure in peeking element
        }
        return arr[top]; // Return top element without modifying top index
    }

    bool isEmpty() {
        return (top < 0); // Return true if stack is empty (top index is -1)
    }

    bool isFull() {
        return (top >= MAX_SIZE - 1); // Return true if stack is full (top index is equal to MAX_SIZE - 1)
    }

    void display() {
        if (top < 0) {
            cout << "Stack is empty" << endl; // Display message if stack is empty
            return;
        }
        cout << "\nStack elements: ";
        for (int i = top; i >= 0; i--)
            cout << arr[i] << " "; // Display elements of the stack
        cout << endl;
    }
};

int main() {
    cout << "MAX_SIZE of the array: " << MAX_SIZE;
    // Initialize a stack 
    Stack s; 
    cout << "\nInsert some elements onto the stack:\n";
    s.push(9); 
    s.push(6);
    s.push(5);
    s.push(2);
    s.push(1);
    s.display(); // Display elements in the stack
    cout << "Is the stack full? " << s.isFull() << endl; // Check if the stack is full
    cout << "\nRemove an element from the stack! ";
    cout << s.pop(); // Pop an element from the stack
    s.display(); // Display elements in the stack
    cout << "Is the stack full? " << s.isFull() << endl; // Check if the stack is full
    cout << endl;
    return 0;
}

Sample Output:

MAX_SIZE of the array: 5
Insert some elements onto the stack:

Stack elements: 1 2 5 6 9
Is the stack full? 1

Remove an element from the stack! 1
Stack elements: 2 5 6 9
Is the stack full? 0

Flowchart:

Flowchart: Check if the stack (using an array) is full.
Flowchart: Check if the stack (using an array) is full.
Flowchart: Check if the stack (using an array) is full.

CPP Code Editor:

Contribute your code and comments through Disqus.

Previous C++ Exercise: Implement a stack using an array with push, pop operations.
Next C++ Exercise: Sort a stack using another stack.

What is the difficulty level of this exercise?



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/cpp-exercises/stack/cpp-stack-exercise-2.php