Puzzle

我的Stack

    A.第一版

    这个小程序是第一版。（会有第二版吗？）

    1。 程序基本说明：用数组结合模板实现的极其简单的数据结构---stack。

    2。 程序思路：栈底在数组的0位置，数组的上限就是栈的上限，用一个index来标定当前的栈顶，很土吧？

    3。 主要函数介绍：

         A.  T pop();
    	   void push(T element);

    	stack的基本操作，简单判断empty和溢出的情况。没什么好说的。

    4。 不足之处：

    	A. 随便写的，计划再用链表实现一遍。

    #include <iostream>

    using namespace std;

    const int MaxLen = 100;

    template <class T>
    class Stack
    {
    private:
    	T lst[MaxLen];
    	int domino;
    public:
    	T pop();
    	void push(T element);
    	Stack();
    	bool empty();
    	bool full();
    };

    int main()
    {
    	Stack<int> intStack;
    	for (int i=0; i<10; i++)
    	{
    		intStack.push(i*2);
    	}

    	for (i =0; i< 12; i++)
    	{
    		cout<<i<<" is "<<intStack.pop()<<"\n";
    	}
    	return 0;
    }

    template<class T>
    bool Stack<T>::full()
    {
    	return (domino==MaxLen);
    }

    template<class T>
    Stack<T>::Stack()
    {
    	domino =0;
    }

    template<class T>
    bool Stack<T>::empty()
    {
    	return (domino==0);
    }

    template<class T>
    T Stack<T>::pop()
    {
    	if (!empty())
    	{
    		domino--;
    		return lst[domino];
    	}
    	else
    	{
    		cout<<"\nEmpty!\n";
    		return NULL;
    	}
    }

    template<class T>
    void Stack<T>::push(T element)
    {
    	if (!full())
    	{
    		lst[domino]= element;
    		domino++;
    	}
    	else
    	{
    		cout<<"\noverflow!\n";
    	}
    }