A stack or LIFO (last in, first out) is an abstract data type that serves as a collection of elements, with two principal operations: push, which adds an element to the collection, and pop, which removes the last element that was added.

**Push():**

Insert new elements into the top of the Stack. Following image will explain it better:

**Pop():**

Delete an element from the top of the stack. Following image will explain it better:

**Implementation:**

template<class T>

class Stack

{

public:

Stack<T>(){}

void push(T elem);

void pop();

T top();

bool empty();

~Stack(){}

private:

std::list<T> m_list;

};

template<class T>

void Stack<T>::push(T elem)

{

m_list.push_front(elem);

}

template<class T>

void Stack<T>::pop()

{

m_list.pop_front();

}

template<class T>

T Stack<T>::top()

{

return m_list.front();

}

template<class T>

bool Stack<T>::empty()

{

return m_list.empty();

}

**Complexity:**O(1) for all of the above operations

Nice tutorial :-)

ReplyDelete