Memory leak in stack
Don't use NULL unless you have to

Some IDEs will refuse to compile your code unless you include &lt;cstdlib&gt; so that NULL is available. If you compile using a C++ compiler using latest standards, you could use nullptr instead, since it is a language construct in those versions and does not require including anything.

Minor improvements

//bool Stack::isEmpty()
//{
//    if(top == NULL)
//        return true;
//    else
//        return false;
//}

bool Stack::isEmpty()
{
    return top == nullptr;
}


and

//Node * Stack::pop()
//{
//
//    if (isEmpty())
//        return NULL;
//    else
//    {
//        Node * copy = new Node(*top);
//        ll.deleteFirst();
//        top = ll.getHead();
//        return copy;
//    }
//}

Node * Stack::pop()
{
    if (isEmpty())
    {
        return nullptr;
    }

    Node * copy = new Node(*top);
    ll.deleteFirst();
    top = ll.getHead();
    return copy;
}


Alternative implementation

It's not difficult to devise a generic stack:

my_stack.h

#ifndef MY_STACK_H
#define MY_STACK_H

#include &lt;iostream&gt;
#include &lt;stdexcept&gt;
#include &lt;vector&gt;

template&lt;typename T&gt;
class MyStack {

    std::vector&lt;T&gt; storage;
    void check_not_empty()
    {
        if (storage.empty())
        {
            throw std::runtime_error{"Peeking from an empty stack."};
        }
    }

public:
    void push(const T&amp; element)
    {
        storage.push_back(element);
    }

    void pop()
    {
        check_not_empty();
        storage.pop_back();
    }

    const T&amp; peek() const
    {
        check_not_empty();
        return storage[storage.size() - 1];
    }

    size_t size()
    {
        return storage.size();
    }

    bool is_empty()
    {
        return storage.empty();
    }

    friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const MyStack&lt;T&gt;&amp; stack)
    {
        os &lt;&lt; "[";
        std::string separator = "";

        for (size_t i = 0; i != stack.storage.size(); ++i)
        {
            os &lt;&lt; separator &lt;&lt; stack.storage[i];
            separator = ", ";
        }

        return os &lt;&lt; "]";
    }
};

#endif


main.cpp

#include "my_stack.h"
#include &lt;iostream&gt;

using namespace std;

int main()
{
    MyStack&lt;int&gt; stack;

    cout &lt;&lt; stack &lt;&lt; endl;

    for (int i = 1; i &lt;= 5; ++i)
    {
        stack.push(i);
        cout &lt;&lt; stack &lt;&lt; endl;
    }

    while (!stack.is_empty())
    {
        stack.pop();
        cout &lt;&lt; stack &lt;&lt; endl;
    }
}